我的问题很简单:
我的泛型类中有以下方法(类型参数为A和B)
public void add(A elem, int pos, B[] assoc)
我想要做的是创建一个方法
public void add(A elem, int pos)
使用assoc中的空数组调用upper方法。 到目前为止,我已经找到了一个解决方案,因为Java不允许实例化泛型类型的数组。
答案 0 :(得分:4)
接受通用数组的Java泛型方法。
public <T> void printArray(T[] array){
for (T element: array){
System.out.println(element);
}
}
接受通用列表的方法。
public <T> void printList(List<T> list){
for (T element : list){
System.out.println(element);
}
}
答案 1 :(得分:2)
正如你所说,Java不支持通用数组创建,但这可能是因为how generic works,简而言之,泛型只在编译时有用,编译后所有泛型类都只是Object类,所以这就是为什么你不能创建通用数组。
但是,您可以创建一个空的Object
数组并将其强制转换:
class Generic<B> {
public void add(A a, int pos, B[] assoc) {
System.out.println("Length: " + assoc.length);
}
public void add(A a, int pos) {
add(a, pos, (B[]) new Object[0]);
}
}
当我在没有该数组的情况下调用add
时,它会按预期打印0。
答案 2 :(得分:2)
对于两个通用类AClass<T>
和BClass<T>
,我可以想到一种方法:利用varargs
并使用两个不同的命名函数add()
和{{1} }:
addA()