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问题。 也许你真的需要类型,但没有进一步的信息,这有点味道。