泛型与非泛型集合的区别?泛型相对于非泛型有哪些好处?

2024-12-31 13:02:50
推荐回答(1个)
回答1:

带泛型的集合是比如List并在类中定义一个泛型的数组E[] arr,非泛型的一个则是List,然后明确在List中定义一个具体类型的数组type[] arr.
泛型: class X { ... E field; public void x1(E arg) {} public E x2() {} public void x3() {E[] arr;}}

可以限定泛型的范围,比如class X,就是X的E必须是一个Y的子类或接口实现
这样泛型的灵活在于E可以是任意类型,你不必为了同样的类只是处理数据类型不同而写两遍:
比如:
class A {public static int max(int a, int b) {return aclass B {public static double max(double a, double b) {return a
只要class C> {public static E max(E a, E b) {return a.compareTo(b)<0?b:a;}}
使用C和C就可以直接定义A和B

另外就是class X,如有个变量为X var或X var,就相当于X var.这也很有用.
比如一个列表可能有不同类型的值,我们能使用
ArrayList list = new ArrayList();
list.add(new Integer(1)); list.add(new String("aaaa")); list.add(new Person());
处理的时候使用:
Object x = list.get(index);
if(x instanceof Integer) {....}
else if(x instanceof String) {...}
else if(x instanceof Person) {...}
else {...}
这就是泛型的原理,也就是说非泛型可以实现泛型.