0

サブクラス Y のインスタンスを作成中

public class X implements I{
    ...

    ...
    public class Y implements I{
        ...

        ...
    }
}

o = c.newInstance();

ここで、c は Y クラスです。この例外が発生しています。

java.lang.InstantiationException: com.gmail.kubuxu.ms2d.Commands.VersionCommand$CCommand
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at com.gmail.kubuxu.ms2d.CommandProcessor.<init>(CommandProcessor.java:22)
    at com.gmail.kubuxu.ms2d.Conns.CommandServerProtocol.<init>(CommandServerProtocol.java:13)
    at com.gmail.kubuxu.ms2d.Conns.ClientConn.run(ClientConn.java:40)
    at java.lang.Thread.run(Unknown Source)

誰かが私が間違っていることを言うことができますか.

4

2 に答える 2

0

Yは の非静的内部クラスであるため、 のインスタンスを直接X作成することはできませんY

お気に入り

Class clazz = Y.class
Y ref = clazz.newInstance();

このスレッドで説明されているようにする必要があります

Class<X> oc = X.class;
Class<?> c = Class.forName("X$Y");
Constructor<?> con = c.getConstructors()[0];
Y i = (Y)con.newInstance(oc.newInstance());
System.out.println(i);
于 2013-05-16T16:26:45.730 に答える
0

クラス Y は非静的ネスト クラスです。クラス X のインスタンスがないと作成できません。

必要に応じて、最も簡単な解決策は静的にすることです。

public static class Y implements I{
于 2013-05-16T16:27:10.240 に答える