Java:使用lambda参数获取实际类型的generics方法
我在这里问了一些关于lambdas
问题Java:如何解析generics类型的lambda参数? ,但这个有点不同。
我有方法签名:
public void handle(Consumer
consumer) { ... }
我可以用它与lambda
:
.handle(p -> System.out.println(p * 2));
我可以以某种方式解决该实际的generics类型吗? 我的意思是我想在该handle
方法中获取Integer.class
。
顺便说一下,我可以解决这个问题:
public void handle(Class
pClass, Consumer
consumer) {...} .handle(Integer.class, p -> System.out.println(p * 2));
但是,如果我们将lambda更改为内联实现,它看起来并不像犹太洁食。
不,这是不可能的。
你不能得到像T.class
这样的东西,因为generics会在运行时被删除。 你真的需要传入Class
才能获得类本身。
我也闻到了XY问题。 也许你真的需要类型,但没有进一步的信息,这有点味道。