Java使用对象';s类创建泛型类型这是否可能?

Java使用对象';s类创建泛型类型这是否可能?,java,generics,Java,Generics,说我想做 public class Foo{ public Foo(Object c){ Bar<c> bar = new Bar(); } } public class Bar<Type>{ ...... } 公共类Foo{ 公共食品(对象c){ 条形=新条形(); } } 公共类酒吧{ ...... } 这样做可能吗 最后,我希望根据从“对象C”传入的数据类型动态地为Bar提供一个类型。这将被另一个类解析。由于类型参数会被删除,因此Bar

说我想做

public class Foo{

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


public class Bar<Type>{
......
}
公共类Foo{
公共食品(对象c){
条形=新条形();
}
}
公共类酒吧{
......
}
这样做可能吗


最后,我希望根据从“对象C”传入的数据类型动态地为Bar提供一个类型。这将被另一个类解析。

由于类型参数会被删除,因此
Bar的新实例对类型参数一无所知。因此,该代码简化为

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

不,这真的没有任何意义,因为Java中的泛型只在编译时存在,所以除非您当时对
c
有所了解,否则将
Bar
强制转换为泛型类型没有任何好处。

如下:

public <T> Foo(T c) {
    Bar<T> bar = new Bar<>();
}
publicfoo(tc){
条形=新条形();
}

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

不,不可能。您希望实现什么?如果我没记错,泛型是在编译时强制执行的。类型参数表示类型,正如名称所述。因此,在<和>类型之间-需要java类的名称。您希望将一个对象(java类的实例)放在那里。这个问题有点错误,因为你感兴趣的是C的类型,而不是C本身。在这种情况下,@Boann给出了正确的答案。谢谢,这确实有效;现在我想确定我是否理解了原因。@SEngineerJay根据你问题中的编辑:“这将被另一个类解析”我不确定这是否有用,因为听起来你总是用编译时类型
Object
的变量调用这个构造函数,所以泛型不会真正实现太多,如果你想把酒吧的东西传来传去,那可能会很讨厌。但这取决于你如何使用它。如果不可行,请详细说明您的问题,因为可能有另一种更好的解决方案。未使用参数
c
,因此应将其删除。