泛型与lambda表达式
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.function.Consumer;
public class User {
private <T> void test(Consumer<T> request) {
Type[] interfaces = request.getClass().getGenericInterfaces();
for (Type type : interfaces) {
if (type instanceof ParameterizedType) {
Type actualType = ((ParameterizedType) type).getActualTypeArguments()[0];
if (actualType instanceof Class) {
System.out.println(actualType);
return;
}
}
}
System.out.println("没有获取到泛型");
}
public static void main(String[] args) {
new User().test((Consumer<Integer>) integer -> {
});
new User().test(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
}
});
}
}
在main使用了 lambda表达式调用和普通调用,在User.test中获取Consumer的泛型,在使用lambda表达式的时候无法获取,不同调用却可以。我应该修改来支持lambda呢?主要是我想获取传进来的Consumer的泛型,不管是不是用的lambda方式,求指教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不是很懂你的意思。
integer
不就是你定义的范型Integer
吗?