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方式,求指教
不是很懂你的意思。
integer
不就是你定义的范型Integer
吗?