我是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继承的。在方法中使用泛型类型参数作为参数的实际用法是什么?在方法中使用泛型类型参数是否有用?
对象和通用类型之间的区别有什么可以用一个例子来解释一下吗?
有人可以帮帮我吗?
非常感谢
答案 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
,则无效。