例如,
// full_class_name is something like "java.lang.String"
Class<?> cls = Class.forName(full_class_name);
然后我想创建一个“cls”对象的Vector。那可能吗?矢量肯定不起作用。我不想要一般的Vector<?>
对象。
我是Java新手。感谢。
答案 0 :(得分:1)
Java Generics仅在编译时适用,这要归功于 type erasure 。这意味着如果您在编译时不知道要将哪个对象存储在集合中,那么泛型无法帮助您。
从编码的角度来看,你可以创建Vector<Object>
来获得一个不受限制的Vector,它不会给出编译时警告。
顺便提一下,Vector是一个旧的集合,并且更好的替换为像ArrayList这样的新类型。
答案 1 :(得分:0)
Vector<Class<?>> v
将是未知类型的向量;
Vector<Class<String>>
将是String.class对象的向量; This doc在类型令牌上有更多,我认为这是你需要的。我没有看到只有一种类型的Class对象的集合是有意义的,你想要完成什么?
答案 2 :(得分:0)
通常,如果在创建向量之前不知道对象类,则没有其他选择,但是原始Vector
(但它给出了ide警告)或Vector。但如果您在编译时知道该类,则应该使用它:
Vector<MyClass>