我有一个课程如下:
public class MyConverter {
public <T> T convert (Object o, String typeidentifier, T dummy)
{
... do some conversions such as a java array to an ArrayList or vice versa
... based on a typeidentifier syntax similar to Class.getName() but which
... embeds information about generic subtypes
}
}
Run Code Online (Sandbox Code Playgroud)
并希望能够像这样做一般的事情:
int[] ar = {...};
ArrayList<Integer> dummy = null;
Integer elem = MyConverter.convert(ar, "java.util.ArrayList<Integer>", dummy)
.get(15);
Run Code Online (Sandbox Code Playgroud)
也就是说,Tin转换本身可能是一个通用实例,我发现要实现这个目标,我必须传递一个完全类型的虚拟,因为如果我使用ArrayList.class的ArrayList<Integer>话,它将不会给java编译器提供足够的信息.Class<T> dummycls而不是T dummy.
我错过了什么吗?有没有办法在不需要虚拟的情况下编写和调用转换?
Boh*_*ian 10
指定调用的类型,而不是让java推断类型:
Integer elem = MyConverter.<ArrayList<Integer>>convert(ar, "java.util.ArrayList<Integer>");
Run Code Online (Sandbox Code Playgroud)
此链接描述了这种(酷)语法.
这种看起来像Arrays.asList,它会取一个原生数组并将其转换为一个ArrayList。
一个实现可能如下所示:
public static <T> List<T> asList(T... a) {
ArrayList<T> arr = new ArrayList<T>();
for (T item: a) {
arr.add(item);
}
return arr;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8178 次 |
| 最近记录: |