StringBuffer sb=(StringBuffer)Class.forName("StringBuffer").newInstance();

解决方案 »

  1.   

    其实就是怎样把"StringBuffer"这个字符串变成StringBuffer这个类?
      

  2.   

    对啊!
    String s="StringBuffer";Object o=Class.forName(s).newInstance();这个o就是StringBuffer的对象了
      

  3.   

    可是我不知道我要转换的是StringBuffer类呀,这个是要根据s的内容动态转换的,也就是说StringBuffer sb=(StringBuffer)Class.forName("StringBuffer").newInstance();中(StringBuffer)也是不知道的,要根据"StringBuffer"得到
      

  4.   

    Object o=Class.forName(s).newInstance();那就得到Object类了,可是我要的是根据s的变量值的类呀!
      

  5.   

    Object o=Class.forName(s).newInstance();那就得到Object类了,可是我要的是根据s的变量值的类呀!
    ------
    后面使用的时候强制转换!
      

  6.   

    我是根据String s="StringBuffer"的到s的值
    再是根据s值对应的值生成一个相对应的新类,至于这个类的操作,我会在另外的地方定义,来用的现在是怎样生成这个类的问题
      

  7.   

    如果我在别的地方定义了要对这个类有getName()方法,
    现在得到Object,可是我不能o.getName()呀!
      

  8.   

    你的字符串已经是这个类的名字了
    何必在麻烦地通过其他办法得到这个名字呢?不过也可以啊
    Class c=Class.forName("StringBuffer");
    String name=c.getName();
      

  9.   

    肯定知道的,
    我不是要得到这个名字,我是要这个类
    ------------
    既然是知道的,那就强制转换刚才的Object就可以了啊
      

  10.   

    tring s="A"
    A a=new A();
    a.doSomthing()String s="B"
    B b=new B();
    b.doSomhting1();但是知道的是Sting 中的值,不能"StringBuffer" s=new "StringBuffer",一定要StringBuffer s=new StringBuffer(); 
      

  11.   

    觉得你很迷糊
    要得到这个类,一般用于调用其中的方法
    简单的方式是这个类实现一个接口或继承一个父类interface AAA{
    public void doSomething();
    }AAA a = (AAA)Class.forName("SomeClass").newInstance();
    a.doSomething();
      

  12.   

    可是我的自定义类很多,里面的方法也很多,所以不能用接口"MyClass1" s=new "MyClass1"()怎样能变成MyClass1 s=new MyClass1()当然"MyClass1"字符串是变的,其实这就是java中是不是可以在运行时确定类型,即rtti。而且不能用多态来解决,因为没法用多态
      

  13.   

    根据"MyClass1",你知道要调用什么方法吗? 知道那就反射方法再调用我的blog上有2篇文章可以参考(http://blog.csdn.net/kingfish)
      

  14.   

    kingfish(八百里秦川@龙城异客)  高手!反射的经典用法!
      

  15.   

    public class TestClass{
    public static void main(String[] args){
    String s=new String("Str");
       try{
         String o=(String)Class.forName(s).newInstance();
        System.out.println(o);
    }
            catch(Exception e){
    e.printStackTrace();
    }
    }
    }
    怎么报找不到类的错误?
      

  16.   

    public class Test1
    {
     public Test1(){
       System.out.println("Test1");
     } public void showTest(){
       System.out.println("showTest();");
     } public void showTest2(String s,String y){
        System.out.println(s+":"+y);
     }
    }import java.lang.reflect.*;public class TestMain
    {
     public TestMain(){
     
       System.out.println("TestMain();");
     } public static void main(String[] args){
     String classNm = "Test1";
        String methodNm = "showTest2";
     try{
        Class clazz = Class.forName(classNm);
        Method method = clazz.getMethod(methodNm, new Class[] {Class.forName("java.lang.String"),Class.forName("java.lang.String")}); // get method with no arguments;
        Object obj = clazz.newInstance();
        method.invoke(obj, new Object[]{"xxxx","yyyy"}); // invoke the method on that specific intance
     }catch(Exception e){
       System.out.println(e.getMessage());
     }
     }
    } 可以了