public void test(Class<T> clazz)
{
List list = new ArrayList();
}
这个clazz是从别的地方传过来的,可不可以指定list只能存储这个Class我用 List<clazz> list = new ArrayList<clazz>(); 并且在类名后加上 <clazz>编译可以通过,但是运行时在后面还可以给list add不同于clazz的对象,不知道这是为什么?
{
List list = new ArrayList();
}
这个clazz是从别的地方传过来的,可不可以指定list只能存储这个Class我用 List<clazz> list = new ArrayList<clazz>(); 并且在类名后加上 <clazz>编译可以通过,但是运行时在后面还可以给list add不同于clazz的对象,不知道这是为什么?
List<Class<T>> list = new ArrayList<Class<T>>();
public void test(Class <T> clazz)
{
List<Class<T>> list = new ArrayList<Class<T>>();}
public class Test<T> { public void test(Class<T> clazz){
List<Class<T>> list = new ArrayList<Class<T>>(); Object str = new String("aa");
list.add((Class<T>) str);
}
public static void main(String[] args){
Test t = new Test();
t.test(String.class);
}
list.add((Class <T>) str); 你为什么要把 str 强制转换为 T?你明明知道 str 是字符串类型的。
改为:list.add(str.getClass());
试试
2 你确信你添加的不是一个子类? List<String> list = new ArrayList<String>();你看看是不是只能向list里面加入字符串?呵呵
为什么已经指定List存储String类型 还会出错呢
List<String> list = new ArrayList<String>(); 这么定义的话当然只能添加String类型的了
但是3楼的贴代码为什么会出错TO duanjianbo
试过了还是不行的
List<Class<T>> list = new ArrayList<Class<T>>(); Object str = "aa";
list.add((Class<T>) str.getClass());
Object timestamp = new Timestamp(100);
list.add((Class<T>) timestamp.getClass());
}
public static void main(String[] args){
Test t = new Test();
t.test(String.class);
}
}
可是这段代码跑起来也正常,貌似传进去的"String.class"没有起到作用
list.add((Class <T>) str.getClass()); Object timestamp = new Timestamp(100);
list.add((Class <T>) timestamp.getClass()); //没有出错
} public static void main(String[] args){ Test t = new Test();
t.test(String.class);
}
}
拜托哪位大侠看看,为什么那里没有出错。
public class Test <T> { public void test(Class <T> clazz){ List <Class <T>> list = new ArrayList <Class <T>>(); Object str = new String("aa");
list.add((Class <T>) str); //你的这句错了,改为list.add((Class <T>) str.getClass());
System.out.println("hello");
} public static void main(String[] args){ Test t = new Test();
t.test(String.class); }
}