我的问题很简单:
我的通用类中有以下方法(类型参数为A和B)
public void add(A elem, int pos, B[] assoc)
Run Code Online (Sandbox Code Playgroud)
我想做的是创建一个方法
public void add(A elem, int pos)
Run Code Online (Sandbox Code Playgroud)
它用assoc中的空Array调用upper方法。到目前为止,我没有找到解决方案,因为Java不允许实例化泛型类型的数组。
接受通用数组的Java通用方法。
public <T> void printArray(T[] array){
for (T element: array){
System.out.println(element);
}
}
Run Code Online (Sandbox Code Playgroud)
接受通用列表的方法。
public <T> void printList(List<T> list){
for (T element : list){
System.out.println(element);
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所说,Java不支持泛型数组的创建,但这可能是因为泛型的工作原理,简而言之,泛型仅在编译时才重要,编译后所有泛型类都只是对象类,所以这就是为什么你不能创建泛型数组。
但是,您可以创建一个空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]);
}
}
Run Code Online (Sandbox Code Playgroud)
当我在add没有该数组的情况下调用时,它会按预期打印 0 。
| 归档时间: |
|
| 查看次数: |
7511 次 |
| 最近记录: |