Java使用对象的类来创建泛型类型是否可能?

时间:2014-07-31 22:01:30

标签: java generics

说我想做..

public class Foo{

  public Foo(Object c){
      Bar<c> bar = new Bar();
  }
}


public class Bar<Type>{
......
}

这有可能吗?

最终,我想根据从&#34;对象C&#34;传入的数据类型动态地为Bar提供一个类型。这将由另一个类解析。

3 个答案:

答案 0 :(得分:6)

像这样:

public <T> Foo(T c) {
    Bar<T> bar = new Bar<>();
}

但请注意,这是基于c的编译时类型,而不是运行时类型。

答案 1 :(得分:2)

不,它确实没有任何意义,因为Java中的泛型只存在于编译时,所以除非你在那时知道c的某些内容,否则没有任何优势通过将Bar转换为通用类型。

答案 2 :(得分:0)

由于类型参数无论如何都被擦除,Bar的新实例对类型参数一无所知。因此,此代码缩减为

public Foo(Object c){
    Bar bar = new Bar();
}