List 添加 Class 泛型

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;

/**
*

  • @author Administrator */ public interface List extends java.util.List {

}
[/code]

[code="java"]
package org.test.jy;

/**
*

  • @author Administrator */ public class ArrayList extends java.util.ArrayList implements org.test.jy.List{

}
[/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]