Java 如果使用getConstructor()创建内部类,如何创建实例

Java 如果使用getConstructor()创建内部类,如何创建实例,java,reflection,nosuchmethoderror,getconstructor,Java,Reflection,Nosuchmethoderror,Getconstructor,可能重复: 有人能帮我理解如何使用getConstructor创建内部类的实例吗 这就是我现在的处境 import java.lang.reflect.*; public class Outer{ public Outer(int i){ //things to do } public class Inner{ Class<?>[] type = new Class<?>[1]; Class<?> myClass; public Inner(int

可能重复:

有人能帮我理解如何使用getConstructor创建内部类的实例吗

这就是我现在的处境

import java.lang.reflect.*;

public class Outer{
public Outer(int i){
//things to do
}
public class Inner{
Class<?>[] type = new Class<?>[1];
Class<?> myClass;
    public Inner(int i){
    //stuff and code
    }

    public void task(){
    type[0] = Integer.class;
    try{
        myClass = Class.forName("Outer$Inner");
        Constructor construct = myClass.getConstructor(type);
        Object i = construct.newInstance(new Integer(43));
    }
    catch(Exception e){
        e.printStackTrace();
    }
    }
}

public static void main(String[] args){
Outer outer = new Outer(new Integer(21));
Inner inner = outer.new Inner(new Integer(22));
inner.task();
}
import java.lang.reflect.*;
公共舱外{
公共外部(int i){
//要做的事情
}
公共阶级内部{
类别[]类型=新类别[1];
类myClass;
公共内部(int i){
//材料和代码
}
公开作废任务(){
类型[0]=Integer.class;
试一试{
myClass=Class.forName(“外部$内部”);
构造函数construct=myClass.getConstructor(类型);
objecti=construct.newInstance(新整数(43));
}
捕获(例外e){
e、 printStackTrace();
}
}
}
公共静态void main(字符串[]args){
外部=新外部(新整数(21));
内部=外部。新内部(新整数(22));
内部任务();
}
}

错误信息

java.lang.NoSuchMethodException: Outer$Inner.<init>(java.lang.Integer)
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getConstructor(Class.java:1657)
at Outer$Inner.task(Outer.java:18)
at Outer.main(Outer.java:30)
java.lang.NoSuchMethodException:Outer$Inner.(java.lang.Integer)
位于java.lang.Class.getConstructor0(Class.java:2706)
位于java.lang.Class.getConstructor(Class.java:1657)
在Outer$Inner.task(Outer.java:18)
at Outer.main(Outer.java:30)
对不起,我遗漏了一些明显的东西
如果我能解决这个问题,我希望从txt文件中获取输入,并使用字符串创建对象。

如果将InnerClass改为静态类,是否有效

如果外部类不是静态内部类,它通常需要外部类的上下文来创建内部类。我相信您需要将外部实例传递给构造函数-让我从后面拉出一个随机引用:


这个问题在链接的问题中没有得到解决。它确实帮助我将内部类更改为静态类(感谢2010年的James)@drorsun-不客气-2015年的James