我有一个方法,我不能改变,它需要一个T[]
数组。
我需要“ toString()
”[i]
数组元素,事先不知道的类型T
。
对于所有对象,我可以调用toString()
但T[]
可以是一组原语,这没有意义:
int i = 0;
i.toString(); // nonsense
我能做些什么?
回应:
T[] 可能是一个基元数组,这没有意义
泛型类型不能是基元,这保证了数组始终是对象数组。由于每个对象都扩展Object
它会有一个toString
方法。
泛型类型不能是原始类型。问题不存在。
泛型不能与原始类型一起使用。因此,T[]
不能是基元数组。因此,您始终可以调用arr[i].toString()
whenarr
类型为T[]
。
编译器将允许.toString()
调用,这应该是一个很好的线索,告诉你它实际上会工作。只有当 Java 编译器不允许您做某事时,才该考虑如何去做。这就是Java中事物的顺序。