泛型与lambda表达式

新手上路,请多包涵
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方式,求指教

阅读 5.3k
1 个回答

不是很懂你的意思。
integer不就是你定义的范型Integer吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题