動的な型を返す:別のクラスでJavaのジェネリックあなたがこれを持っているような状況を想像し
// Marker
interface Type {}
interface CustomType extends Type {
int getSomething();
int getAnotherThing();
}
class CustomTypeImpl implements CustomType {
public int getSomething() {
return 1;
}
public int getAnotherThing() {
return 2;
}
}
を、私はこのような一般的なメソッドを持つようにしたい:の実装を返す
public <T extends CustomType> T getFromInterface(Class<T> clazz)
クラスIをパラメータに入れます。たとえば、このメソッドを以下のように呼び出すとします。SomeInstanceOfClass.getFromInterface(CustomType.class)
そしてCustomTypeImpl
のインスタンスを返します。
@EDIT:私はgetFromInterface(Class<T> clazz)
メソッドの引数として使用できるすべてのインターフェイスを格納するメソッドにアクセスできることを言いました。
このメソッドのシグネチャは、次のとおりです。public Set<? extends Class<? extends Type>> allTypes()
は、どのように私はこれをしてください行うために管理することができますか?
インターフェイスに2つの実装がある場合はどうなりますか?それが決してしなければ、とにかくインターフェイスのポイントは何ですか? –
実際には、オブジェクトに共通のタイプを持つことを可能にするマーカーインターフェイスがあります。状況は次のようなものです:interface Type {// marker} interface CustomTypeはType {// look above}と私の実装を拡張します。実際には、Typeを拡張する他のインターフェイスがあり、Typeを拡張する各インターフェイスの実装があります。 –
答えがあなたの質問を解決するかもしれませんが、あなたの問題が何であれ、おそらくもっと良い解決策があると思います。 –