public void test(Class clazz)
{
List list = new ArrayList();
}
这个clazz是从别的地方传过来的,可不可以指定list只能存储这个Class
我用 List list = new ArrayList(); 并且在类名后加上 编译可以通过,但是运行时在后面还可以给list add不同于clazz的对象,不知道这是为什么?
[b]问题补充:[/b]
List list = new ArrayList();
是错误的
<>中应该是类型.并不是实例clazz是Class类的实例所以你上面的代码是错误的.
这种时候应该使用接口来规范类型
那我怎样做才能实现这个功能呢,网上说用反射,不过还没搞清楚。
Thanks in advance!
[b]问题补充:[/b]
public class Test {
public void test(Class<T> clazz){
List<Class<T>> list = new ArrayList<Class<T>>();
Object str = "aa";
list.add((Class<T>) str);
}
public static void main(String[] args){
Test t = new Test();
t.test(String.class);
}
}
差不多是这个样子的,但运行的时候会出"java.lang.ClassCastException: java.lang.String", 不知道为什么
[b]问题补充:[/b]
其实我就是想
List list = new ArrayList(); 的时候 这个list中只能存放传进去的指定的class, 比如String或者其他自定义的类。
谢谢大家了。
[b]问题补充:[/b]
比如 Test t = new Test();
t.test(String.class);
这时list.add("abc");是可以的
但list.add(new Timestamp(100))则不行