Class demoClass = Class.forName(classname);
    Constructor demoConstructor = demoClass.getConstructor(new Class[]{SwingSet2.class});
    demo = (DemoModule) demoConstructor.newInstance(new Object[]{this});
    addDemo(demo);这是JDK自带的DEMO SwingSet2里的一段代码.
关键在于那句 SwingSet2.class,这是什么意思?

解决方案 »

  1.   

    取出SwingSet2类,demoClass.getConstructor(new Class[]{SwingSet2.class}); 
    也就是在demoClass中找到public XXXClass(SwingSet2 set) {...}这个构造函数如果不指定参数,XXXClass中可能存在多个构造函数的,就无法找到准确的了  demo = (DemoModule) demoConstructor.newInstance(new Object[]{this}); 
    就是调用上述的构造函数创建出一个新的对象了
      

  2.   

    那个SwingSet2后边的.class是不是所有类都有的字段?它是用蓝色粗体显示的.
      

  3.   

    .class是个特殊的属性,只能用编译好的类名+.+class来引用,该类的实例不能引用,即(new xxxClass()).class是不支持的,但是用getClass可以,即(new xxxClass).getClass(),这样的效果与类名+.+class是一样的。
      

  4.   

    看core JAVA 核心卷I 介绍反射那一章, T.class, 这里的T 可以是任意JAVA类型(注意不一定非要是类),T.class将代表匹配的类对象,例如: Class cl1 = Date.class;
                  Class cl2 = int.class;  这里的Class对象实际上代表的是一种类型,而这个类型未必是一种类,如int不是类,但int.class是一个Class对象.
      

  5.   

    楼上对,
    *.class 表示是一个java定义的类,而不是实例