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))则不行
都不明白 楼主要实现啥 根据你最后补充的想到的
[code="java"]
public class Test {
public void test(Class<?> clazz){
java.util.List<Class<?>> list = new java.util.ArrayList<Class<?>>();
list.add(clazz);
for (Class<?> clz : list) {
System.out.println("---" + clz.getName());
}
}
public static void main(String[] args){
try {
Test t = new Test();
t.test(Class.forName("java.lang.String"));
t.test(java.util.List.class);
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/code]
List list = new ArrayList();
是错误的
<>中应该是类型.并不是实例clazz是Class类的实例所以你上面的代码是错误的.
这种时候应该使用接口来规范类型
[code="java"]
public class NewClass {
public List test() {
return new ArrayList();
}
public static void main(String[] args) {
NewClass nc = new NewClass();
nc.test().add("aaa");//这里只能是String
}
}
[/code]
比如这样,不知道是不是你想要的.
[quote]
public class NewClass {
public List test() {
return new ArrayList();
}
public static void main(String[] args) {
NewClass nc = new NewClass();
nc.test().add("aaa");//这里只能是String
}
}
[/quote]
这个方法完全可以满足你...
如果你定要那样~ 只有BT版本的啦~~
[code="java"]
package org.test.jy;
/**
*
}
[/code]
[code="java"]
package org.test.jy;
/**
*
}
[/code]
[code="java"]
package org.test.jy;
/**
*
@author Administrator
*/
public class JyTest {
private String name;
private String sex;
public JyTest(String name, String sex) {
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
[/code]
[code="java"]
package org.test.jy;
/**
*
@author yangtao309
*/
public class Test {
public static void main(String[] args) {
List list = new ArrayList();
list.add(new JyTest("test1", "male"));
list.add(new JyTest("test2", "female"));
list.add(new JyTest("test3", "female"));
list.add(new JyTest("test4", "male"));
list.add(new JyTest("test5", "male"));
for(JyTest jt:list) {
System.out.println("---" + jt.getName());
}
}
}
[/code]
呵呵~
请确认下 你想实现的是什么?
的具体类型要在实例的时候给出..下班去了
[code="java"]
public class NewClass {
public void test(T obj){
List list = new ArrayList();
list.add(obj);
}
public static void main(String[] args) {
NewClass<String> t = new NewClass<String>();
t.test("sssss");
}
}
[/code]