java 8方法参考和反射

时间:2014-03-06 18:30:49

标签: java reflection java-8

所以我正在尝试使用upcomming jdk8,并在新的Method引用中遇到了一些奇怪的事情。

有没有办法对从Method引用创建的通用功能接口实例的参数进行类型检查?

Method引用的Class返回的getClass()对象没有Methods,Fields或有意义的超类或接口。即使是类名也没有任何有意义的信息。

1 个答案:

答案 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接口中方法的已擦除签名。