使用泛型类型参数作为方法参数而不是使用Object类型有什么用?

时间:2014-06-12 08:10:57

标签: java generics

我是java的新手,我对泛型有点混乱。一篇文章使用了一个方法,它打印了数组的所有元素,该方法采用泛型类型参数。已经将不同类型的Primitive数组传递给此方法,并且它运行良好。

private <E> void printData(E[] arr) {
    for (E e : arr) {
        System.out.println(e);
    }
}`

Integer[] intArray = {1, 3, 4, 5, 5, 23};
Double[] doubleArray = {12.4, 34.5, 3.5, 45.67};
Character[] charArray = {'a', 'b', 'c', 'd'};

printData(intArray);
printData(doubleArray);
printData(charArray);

我的问题是我们可以在printData()mathod中使用Object []类型参数而不是E []类型。因为包含原始包装类的所有类型都是从Object继承的。在方法中使用泛型类型参数作为参数的实际用法是什么?在方法中使用泛型类型参数是否有用?

对象和通用类型之间的区别有什么可以用一个例子来解释一下吗?

有人可以帮帮我吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

您使用泛型用于类型安全避免强制转换。你的例子不完整,让我们来看看:

public class Printer<E> {

   public void printData(E[] arr) {
        for (E e : arr)
           System.out.println(e);
    }
}

Printer<Integer> intPrinter = new Printer<Integer>();

如果您实例化一个新的Printer对象,则将泛型类型传递给该类。这意味着此打印机对象仅适用于此特定类型。因此,您有一个泛型类(可以为多种类型实例化),但是在编译期间您将获得类型安全性。如果您尝试将String传递给intPrinter,则无效。