所以我正在尝试使用upcomming jdk8,并在新的Method引用中遇到了一些奇怪的事情。
有没有办法对从Method引用创建的通用功能接口实例的参数进行类型检查?
Method引用的Class
返回的getClass()
对象没有Methods,Fields或有意义的超类或接口。即使是类名也没有任何有意义的信息。
答案 0 :(得分:4)
你的问题不是很清楚。我想通过方法句柄你的意思是方法参考。在将方法引用分配给类型变量之前,方法引用没有类型。
说你有这个方法:
class A { public String m() { return ""; } }
然后A::m
没有类型:它的类型可以是具有String xxx();
方法的任何功能接口。例如,它可能是:
Supplier<String> s = A::m;
在这种情况下:
System.out.println(s.getClass().getDeclaredMethods()[0]);
打印:
public java.lang.Object mypackage.A$Lambda$1/1554547125.get()
匹配Supplier
接口中方法的已擦除签名。