1

ジェネリック型を使用すると問題が発生します。IDEは次のエラーを表示します:

Cannot select from a type variable 

ここでは型消去の問題があると思いますが、ここにはいくつかの回避策があると思います...

私のコード:

class MyFactory {
  public Object getByClass(Class<?> clazz) {
     ..... 
  }
}


class<T> MyClass {
  private Object myObj = MyFactory.getByClass(T.class);  // HERE ERROR, `Cannot select from a type variable` 
  ...
}

この問題を解決する方法は?

4

1 に答える 1

3

Classオブジェクトをコンストラクターに渡します。

private final Class<T> clazz;
private Object myObj
public MyClass(Class<T> clazz, MyFactory myFactory) {
    this.clazz = clazz;
    this.myObj = myFactory.getByClass(clazz);
}
于 2013-02-04T09:38:43.983 に答える