我在lambdas
public <P> void handle(Consumer<P> consumer) {
...
}
询问了一些问题,但这个问题有点不同。
我有方法签名:
lambda
我可以将其与.<Integer>handle(p -> System.out.println(p * 2));
:
Integer.class
我可以以某种方式解决那个实际的泛型类型吗?
我的意思是我想在handle
方法中获得 public <P> void handle(Class<P> pClass, Consumer<P> consumer) {...}
.handle(Integer.class, p -> System.out.println(p * 2));
。
BTW我可以解决这个问题:
{{1}}
但是,如果我们将lambda更改为内联实现,它看起来并不是犹太人。
答案 0 :(得分:5)
不,这是不可能的。
您无法获得类似T.class
的内容,因为泛型会在运行时被删除。你真的需要传递Class<T>
才能获得课程本身。
我也闻到了XY问题。也许你真的需要类类型,但如果没有进一步的信息,这有点味道。