【编程】Java范型T和?的区别

T和?都表示不确定的类型。

T的意义是自定义范型,?表示通配符范型。

T其实只是一个代号,相当于对范型的命名,你可以按照Java命名规范给他任意命名,可以是E可以是D可以是UnkownClass。

而如果你写了?则表示在告诉JVM:“我是想用Java的范型来编写这段代码,我在这里并不是要用原生类型,但是在当前这种情况下,范型参数可以持有任何类型。”

引号这段话来自《Thinking in Java》。

换句话说,当你写?的时候,?可以是T可以是E可以是D可以是UnkownClass。

以上是理论区别,在实践中最明显的一个区别就是T是可以进行操作的,但是?不行。

public static void main(String[] args) {

        System.out.print(test(1));

        System.out.print(test(1L));

        System.out.print(test(1D));

}

private static String test(UnkownClass x){

        if(x instanceof Integer){

                return "Int-" + x;

        }else if(x instanceof Long) {

                return "Long-" + x;

        }else {

                return "Other";

        }

}

你可能感兴趣的:(Java)