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