首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果内部类具有getConstructor(),如何创建实例

如果内部类具有getConstructor(),如何创建实例
EN

Stack Overflow用户
提问于 2010-12-18 04:49:34
回答 1查看 6.9K关注 0票数 3

可能重复:

Java: How to load a class (and its inner classes) that is already on the class path?

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

这就是我现在的处境。

代码语言:javascript
复制
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();
}

}

错误信息

代码语言:javascript
复制
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)

对不起,如果我遗漏了一些显而易见的东西,如果我能够解决这个问题,我想从txt文件中获取输入,并使用字符串创建对象。

EN

回答 1

Stack Overflow用户

发布于 2010-12-18 05:41:13

如果您将InnerClass改为静态类,会起作用吗?

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

http://jroller.com/tomdz/entry/reflection_inner_classes

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4476696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档