鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全/ 泛型與lambda表達(dá)式

泛型與lambda表達(dá)式

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("沒(méi)有獲取到泛型");
    }


    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表達(dá)式調(diào)用和普通調(diào)用,在User.test中獲取Consumer的泛型,在使用lambda表達(dá)式的時(shí)候無(wú)法獲取,不同調(diào)用卻可以。我應(yīng)該修改來(lái)支持lambda呢?主要是我想獲取傳進(jìn)來(lái)的Consumer的泛型,不管是不是用的lambda方式,求指教

回答
編輯回答
朽鹿

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

2018年9月14日 08:12