-1

重複の可能性:
Java でジェネリック型のインスタンスを作成しますか?

私はこれらのクラスを得ました

public abstract class Base {
    public String Id = "originalId";
}

public class InstanceOfBase extends Base {
    public void setString(String test) {
        this.Id = test;
    }
}

public class UseIt {
    public Test<InstanceOfBase> test = new Test<InstanceOfBase>();

    public void run() {
        InstanceOfBase instanceOfBase = test.createMe();
        System.out.println(instanceOfBase.Id);
    }
}

public abstract class Test<E extends Base> {
    public E createMe() {
        // How do I do this?
        return new E();
    }
}

上記のコードは、E の作成方法がわからないためコンパイルできません。どうすればこれを達成できますか?

run メソッドを呼び出すと、「originalId」が出力されるはずです。

4

1 に答える 1

2

残念ながら、Java ではジェネリック型からクラスを作成することはできません。しかし、Justin Rudd がこのスレッドで提案したように、次のように書くことができます。

public E createMe(Class<E> clazz)
{
    return clazz.newInstance();
}

したがって、classアーキタイプを使用して新しいインスタンスを作成します。それを呼び出すには:

InstanceOfBase instanceOfBase = test.createMe(test.getClass)
于 2012-12-31T11:44:16.177 に答える