Java 强类型数组的泛型向量

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

我有一个方法,它返回一些数据的泛型向量。如何在运行时获取此向量子对象的类型?我花了最后一天的时间试图在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 
// 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;
}
返回克拉兹;
}

是不是向量不为空?