我是java新手,对泛型有一点困惑。一篇文章使用了一种打印数组所有元素的方法,并且该方法采用泛型类型参数。不同类型的原始数组已传递给此方法,例如,它运行良好。
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() 方法中使用 Object[] 类型参数而不是 E[] 类型。因为所有类型(包括原始包装类)都是从 Object 继承的。在方法中使用泛型类型参数作为参数的实际用法是什么?在方法中使用泛型类型参数有什么有用的用法吗?
对象类型和泛型类型之间有什么区别,您能举例说明吗?
有人可以帮我吗?
非常感谢
最佳答案
您使用泛型来类型安全并避免强制转换。您的示例并不完整,让我们看一下:
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
,它将不起作用。
关于java - 使用泛型类型参数作为方法参数而不是使用对象类型有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24179440/