代码之家  ›  专栏  ›  技术社区  ›  juztcode

获取内部类引用并在java中使用string进行转换

  •  0
  • juztcode  · 技术社区  · 4 年前

    String "Ex" (否) .class Class 变量,如下所示:

    Class cls = (string).class
    

    我该怎么做?

    0 回复  |  直到 7 年前
        1
  •  174
  •   Bozho    15 年前
    Class<?> cls = Class.forName(className);
    

    但是你的 className 应完全合格-即。 com.mycompany.MyClass

        2
  •  44
  •   JuanZe Nirbhay Tandon    15 年前
    String clsName = "Ex";  // use fully qualified name
    Class cls = Class.forName(clsName);
    Object clsInstance = (Object) cls.newInstance();
    

    查看Java教程中关于反射的教程 http://java.sun.com/docs/books/tutorial/reflect/TOC.html

        3
  •  8
  •   A1rPun    6 年前

    你可以用 forName 方法 Class :

    Class cls = Class.forName(clsName);
    Object obj = cls.newInstance();
    
        4
  •  4
  •   bob    6 年前

    您可以通过Java反射概念在运行时获得任何类的类引用。

    下面是一个使用返回类创建AClass实例的示例:

    package com.xyzws;
    class AClass {
        public AClass() {
            System.out.println("AClass's Constructor"); 
        }  
        static {   
            System.out.println("static block in AClass");  
        }
    }
    public class Program {   
        public static void main(String[] args) {
            try {       
                System.out.println("The first time calls forName:");   
                Class c = Class.forName("com.xyzws.AClass");      
                AClass a = (AClass)c.newInstance();    
                System.out.println("The second time calls forName:");  
                Class c1 = Class.forName("com.xyzws.AClass"); 
            } catch (ClassNotFoundException e) { 
                // ...
            } catch (InstantiationException e) {  
                // ...
            } catch (IllegalAccessException e) { 
                // ...
            }     
        }
    }
    

    打印输出为

        The first time calls forName:
        static block in AClass
        AClass's Constructor
        The second time calls forName:
    

    该类已加载,因此没有第二个“AClass中的静态块”

    解释如下

    Class.ForName类调用以获取类对象

    通过使用Class对象,我们正在创建类的新实例。

        5
  •  3
  •   Maifee Ul Asad    5 年前

    应该是:

    Class.forName(String classname)

        6
  •  2
  •   Manrico Corazzi    15 年前

    不知道你在问什么,但是。。。 Class.forname