如题
String temp = "ArrayList";

解决方案 »

  1.   

    Class c = Class.forName(temp);
    c.newInstance();
      

  2.   

    谢谢楼上的,顺便在问个问题
    String temp = "ArrayList";
    如果我要把 list.get(i)转换成ArrayList类型,我还是只知道ArrayList是个字符串
      

  3.   

    (temp)list.get(i);  肯定是不行的,请问如何解决
      

  4.   


    这样的话不是生成temp类的实例,而是生成Class类型的实例!
      

  5.   


            List<ArrayList<String>> list = new    ArrayList<ArrayList<String>>();
            list.add(new ArrayList<String>());
            List l = list.get(1);
      

  6.   


    你要这样的话,你的temp字符串必须是这样的:temp="java.util.ArrayList";先把包名不全
    然后:Class.forName(temp).cast(list(0));这里要捕获ClassNotFoundException。
      

  7.   

    谢谢楼上的,但还是不太明白,如果字符串是个自定义类型呢?package com;public class Temp { private String name;
    private String age;
    private String school;
    private int sex;


    public String getAge() {
    return age;
    }
    public void setAge(String age) {
    this.age = age;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getSchool() {
    return school;
    }
    public void setSchool(String school) {
    this.school = school;
    }
    public int getSex() {
    return sex;
    }
    public void setSex(int sex) {
    this.sex = sex;
    }
    如:String temp = "Temp";  PS:Temp 是上面定义的自定义类型  
    而List list = new ArrayList();
    list.add(new Temp());
    list.add(new Temp());
    list.add(new Temp());for(int i = 0; i<list.size(); i++){     list.get(i);}问题就是我想转换list返回的Object对象为字符串描述的对象,麻烦了,谢谢
      

  8.   

    如果想做到 (temp)list.get(i); temp 是字符串指定的。目前的 JDK 版本还不允许这么做。
      

  9.   

    问题就是我想转换list返回的Object对象为字符串描述的对象,麻烦了,谢谢 
    我在8楼给了方法了。
    现在你的temp="Temp";应该是找不到类的,应该写成temp="com.Temp";然后用8楼的方法。
    ps:lz你为什么要费这么大的劲来搞这个?你是想往list里面添加任意类的对象,然后根据类名去取吗?
      

  10.   

    谢谢楼上的,对,我就是想根据类型取,因为我事先根本不在知道 list 中 会存的是什么类型的对象
    所以我取的时候肯定时候是要动态的来转换
    顺便说下,我只是打个比方字符串是 ArrayList 其实我肯定可以通过 object.getClass().getName 来得到
    包名和类型名称的PS: 8楼的
    Class.forName(temp).cast(list(0));这里要捕获ClassNotFoundException。
    cast方法是不是jdk1.4没有,我怎么.都.不出来谢谢帮我解决下,谢谢了,本人总是喜欢有奇思怪想
      

  11.   

    (temp)list.get(i); 这样是JDK不允许的,实际上也没有任何意义,因为Object x = list.get(i);   Object x = (temp)list.get(i)并没有实际区别
    如果你想判断list.get(i)如果不是temp类型时抛出 ClassCastException,可以这样Object x = list.get(i);
    Class clz = Class.forName(temp);if(x.getClass() != clz)
       throw new ClassCastException(...);
      

  12.   

    问题是你从list取出对象后,你觉得你后续代码到底要写什么?
    temp o = (temp)list.get(i);//你的原意就是指可以动态生成这个类型temp但是问题是,你后续代码到底调用o的什么方法或者属性?你的主程序在写的过程中就已经无法预知temp到底是什么类,也就不可能知道里面有什么方法,
    那后续代码就根本无法写了如果你想动态调用里面的方法,也就是在主程序中并不写死调用什么方法,那完全可以利用java中的反射机制来完成。
    Object o = list.get(i);
    o.getClass().getMethod(methodName, ...).invoke(o);这样就可以动态调用了,你并不需要将list.get(i)转换成temp类型的对象
      

  13.   


    list.add(new Temp()); 
    list.add(new Temp()); 
    list.add(new Temp()); 
    谢谢楼上的,好像有点这个意思了,比如说,我list的每个temp对象的get方法返回值都不一样,我可以通过
    Object o = list.get(i); 
    o.getClass().getMethod(methodName, ...).invoke(o);取出来吗?
      

  14.   

    总算出来了,谢谢
    我就是想把一个List
    自动转换成XML的形式
    而我不知道 list里面是什么类型的对象
    public String listToXml(List list){            .......return strXml}
      

  15.   

    楼主是否考虑用:instanceof来判断一下,应省事了