Java 强类型数组的泛型向量
我有一个方法,它返回一些数据的泛型向量。如何在运行时获取此向量子对象的类型?我花了最后一天的时间试图在Java文档和google中找到解决方案。 当我尝试这样做时,即:Java 强类型数组的泛型向量,java,android,vector,Java,Android,Vector,我有一个方法,它返回一些数据的泛型向量。如何在运行时获取此向量子对象的类型?我花了最后一天的时间试图在Java文档和google中找到解决方案。 当我尝试这样做时,即: Vector<String> myVector = new Vector<String>(); //here I fill array with data ....... // here I my code don't know now what is element type of // myVect
Vector<String> myVector = new Vector<String>();
//here I fill array with data
.......
// here I my code don't know now what is element type of
// myVector and need to get it in some way
Class<?> baseClass = myVector.toArray().getClass().getComponentType();
Vector myVector=new Vector();
//这里我用数据填充数组
.......
//在这里,我的代码现在不知道元素类型是什么
//myVector,需要以某种方式获取它
类baseClass=myVector.toArray().getClass().getComponentType();
最后一行返回我
对象
像
这样的泛型参数类型仅在编译期间存在,并且将得到类型擦除,因此只剩下对象
好的,我们可以选择最专业的普通课程:
public Class<?> commonComponentClass(Collection<?> collection) {
Class<?> klazz = null;
for (Object item : collection) {
if (item == null)
continue;
Class<?> itemKlazz = item.getClass();
if (klazz == null) {
klazz = itemKlazz;
} else {
while (klazz != itemKlazz) {
if (itemKlazz.isAssignableFrom(klazz)) {
klazz = itemKlazz;
break;
} else if (klazz.isAssignableFrom(itemKlazz)) {
break;
}
if (itemKlazz != Object.class)
itemKlazz = itemKlazz.getSuperclass();
if (klazz != Object.class)
klazz = klazz.getSuperclass();
}
}
}
if (klazz == null) {
klazz = Object.class;
}
return klazz;
}
公共类commonComponentClass(集合){
类klazz=null;
用于(对象项:集合){
如果(项==null)
持续
类itemKlazz=item.getClass();
if(klazz==null){
klazz=项目klazz;
}否则{
while(klazz!=项目klazz){
如果(项目klazz.isAssignableFrom(klazz)){
klazz=项目klazz;
打破
}else if(klazz.isAssignableFrom(itemKlazz)){
打破
}
if(itemKlazz!=Object.class)
itemKlazz=itemKlazz.getSuperclass();
if(klazz!=Object.class)
klazz=klazz.getSuperclass();
}
}
}
if(klazz==null){
klazz=Object.class;
}
返回克拉兹;
}
是不是向量不为空?