Java泛型问题

Java泛型问题,java,generics,Java,Generics,我有一节课 public abstract class FakeClass<T extends MyClass> { protected HashMap<Character, T> myMap; private void myMethod(){ myMap.put('c', /*???? I need to instatiate something of type T here.*/) } } 公共抽象类FakeClass{ 受

我有一节课

public abstract class FakeClass<T extends MyClass> {
    protected HashMap<Character, T> myMap;

    private void myMethod(){
        myMap.put('c', /*???? I need to instatiate something of type T here.*/)
    }
}
公共抽象类FakeClass{
受保护的HashMap-myMap;
私有void myMethod(){
myMap.put('c',/*?,我需要在这里设置T类型的东西。*/)
}
}
正如您所看到的,我不知道如何实例化t类型的东西。这可能吗?如果是这样的话,有人能给我指出正确的方向吗


谢谢

通常,泛型的要点是能够在编译时接受未知类型作为输入

无法实例化未知类(因为它可能没有可见的构造函数)。 如果只需要在地图中放置占位符,则可以放置
null


在不了解更多上下文的情况下,任何人都不能做更多的事情。

通常,泛型的要点是能够在编译时接受未知类型作为输入

无法实例化未知类(因为它可能没有可见的构造函数)。 如果只需要在地图中放置占位符,则可以放置
null


在不了解更多上下文的情况下,任何人都不能做更多的事情。

这只能通过将有关t的一些信息传递给
myMethod()
来完成。中描述的一种方法是为
T
传递工厂对象。中描述的一种特殊情况是将
类类型
参数传递给
myMethod()
,然后可以使用
type.newInstance()
使用默认构造函数创建新的T对象。(如果T没有默认构造函数,则此操作将失败。)
Class
对象用作
T
的工厂对象


我们之所以需要这一切,是因为在Java中。

这只能通过将有关T的一些信息传递给
myMethod()
来实现。中描述的一种方法是为
T
传递工厂对象。中描述的一种特殊情况是将
类类型
参数传递给
myMethod()
,然后可以使用
type.newInstance()
使用默认构造函数创建新的T对象。(如果T没有默认构造函数,则此操作将失败。)
Class
对象用作
T
的工厂对象


我们需要所有这些的原因是因为Java。

请粘贴“MyClass”的代码,这样我们可以帮助您。@MacGyver先生,这可能不会有帮助,因为
MyClass
并不总是匹配
t extensed MyClass
。有帮助的是关于该映射将用于什么的上下文。请粘贴“MyClass”的代码,以便我们可以帮助您。@MacGyver先生,这可能不会有帮助,因为
MyClass
并不总是匹配
t extensed MyClass
。有帮助的是关于该映射将用于什么的上下文。很不幸,Java泛型是这样设计/实现的。类型擦除是如何发挥作用的?我想说,我们需要所有这些的原因是构造函数不会以与其他方法相同的方式继承。@事实上,如果没有类型擦除,JVM(而不仅仅是Java编译器)就会知道t到底是什么,所以“new t()”将是有意义的。@luiscubal:泛型与此无关。如果你想创建一个接口的“实例”,没有泛型(和相同的解决方案),你也会遇到同样的问题。@trutheality-我同意没有类型擦除是“new T()”有效的必要条件,但不是充分条件,如果这是你的意思的话。这是“必要的”,因为即使T有一个默认构造函数,如果JVM不知道T是从什么开始的,这也是毫无意义的。很不幸,Java泛型是这样设计/实现的。类型擦除是如何发挥作用的?我想说,我们需要所有这些的原因是构造函数不会以与其他方法相同的方式继承。@事实上,如果没有类型擦除,JVM(而不仅仅是Java编译器)就会知道t到底是什么,所以“new t()”将是有意义的。@luiscubal:泛型与此无关。如果你想创建一个接口的“实例”,没有泛型(和相同的解决方案),你也会遇到同样的问题。@trutheality-我同意没有类型擦除是“new T()”有效的必要条件,但不是充分条件,如果这是你的意思的话。这是“必要的”,因为即使T有一个默认构造函数,如果JVM不知道T是从什么开始的,这也是毫无意义的。