2016-08-16 4 views
0

私は別のクラスを拡張する特定のクラスメンバーを持つと思われるいくつかのクラスを作成する必要があるので、から継承する。特定のクラスがジェネリック型の制約を満たしているかどうかを調べる

このスーパークラスに、ユーザーが取得できる必要な型の正しいインスタンスを保持します。

私はクラスオブジェクトを取得するクラスを作成していますが、そのクラスのオブジェクトをインスタンス化したいのですが、ジェネリックタイプと同じ制約を満たしている場合にのみ、それを確認する方法がわかりません。

クラスは、このようなものです:私はクラスがの子のタイプで実際にあるかどうかを確認することができますどのように

The method isAssignableFrom(Class) is undefined for the type T

public class GenericClass<T extends SomeClass<S> & AnotherClass<S>, S extends Object> 
{ 
    protected T myObject; 

    public GenericClass(Class objectClass) 
    { 
     //this line is the problem 
     if(T.isAssignableFrom(objectClass)) 
     { 
      try 
      { 
       myObject= (T) objectClass.newInstance(); 

      } 
      catch (InstantiationException e) 
      { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

    } 

    public T getMyObject() 
    { 
     return myObject; 
    } 
} 

問題のある行は、エラーを与えていますTとその制約を満たすか?チェックのためにcatchブロックを使用するだけですか?

+0

パラメータとして 'クラス'を使用しますか? –

答えて

0

So how can I check if the class is indeed of a type of a child of T and meet its constraint?

あなたがジェネリック型を使用する場合、コンパイラはこれをチェックします(また、あなたがキャストを必要としません)

public GenericClass(Class<T> objectClass) { 
    try { 
    myObject = objectClass.newInstance(); 

    } catch (InstantiationException e) { 
    e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
    e.printStackTrace(); 
    } 
} 
関連する問題