![]() |
1
9
类型提示用于避免反射;它们(当前)不用于静态类型化函数或构造函数参数(异常是原语,因为它们不能包含在
user=> (set! *warn-on-reflection* true) true user=> (defprotocol P (foo [p])) P user=> (defrecord R [s] P (foo [_] (.getBytes s))) ; getBytes is a method on String Reflection warning, NO_SOURCE_PATH:6 - reference to field getBytes can't be resolved. user.R user=> (foo (R. 5)) java.lang.IllegalArgumentException: No matching field found: getBytes for class java.lang.Integer (NO_SOURCE_FILE:0) user=> (defrecord R [^String s] P (foo [_] (.getBytes s))) user.R user=> (foo (R. 5)) java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String (NO_SOURCE_FILE:0)
|
![]() |
2
6
据我所知,输入提示
|