Java 带通配符参数的嵌套泛型容器?

Java 带通配符参数的嵌套泛型容器?,java,generics,Java,Generics,为了理解java中的泛型,我编写了以下代码 问题是-我应该如何参数化myBox,以便它接受FilterType myFilterType public class Generics { /** * @param args */ public static void main(String[] args) { Generics g = new Generics(); Object myValue = "putThisInto

为了理解java中的泛型,我编写了以下代码

问题是-我应该如何参数化
myBox
,以便它接受
FilterType myFilterType


public class Generics {

    /**
     * @param args
     */
    public static void main(String[] args) {

        Generics g = new Generics();
        Object myValue = "putThisIntoTheBox";

        FilterType<?> myFilterType3   = g.new FilterType<>(null); //works
        Box myBox3                      = g.create(myFilterType3, myValue); //fails - create won't accept myFilterType3
    }

    public <T> Box<T> create(FilterType<T> type, T value) {
        return new Box<T>(value);
    }

    //CLASSES

    public class FilterType<T>{
        T type;
        public FilterType(T type) {
            this.type = type;
        }
    }

    public class Box<T>{
        T value;
        public Box(T value) {
            this.value = value;
        }
    }

}

公共类泛型{
/**
*@param args
*/
公共静态void main(字符串[]args){
泛型g=新泛型();
Object myValue=“将其放入框中”;
FilterType myFilterType3=g.new FilterType(null);//有效
Box myBox3=g.create(myFilterType3,myValue);//失败-create不接受myFilterType3
}
创建公用框(过滤器类型,T值){
返回新框(值);
}
//班级
公共类筛选器类型{
T型;
公共过滤器类型(T型){
this.type=type;
}
}
公共类箱{
T值;
公用箱(T值){
这个值=值;
}
}
}

问题在于
create
方法要求
FilterType类型
T值
参数的类型一致

这里,该值被声明为一个
对象
实例,因此它期望类型T generic也是一个对象实例


声明
FilterType myFilterType3
解决了这个问题。

FilterType
如果
FilterType
本身不是泛型的,则没有任何意义。同样地,
FilterType
Box
也没有意义,因为它们包含
T
类型的字段,但没有说明
T
是什么。当然它们应该是通用的。你到底想做什么?当然这没有意义,但这只是一个例子。我希望,在类型擦除下,所有内容都会下降到Object,但是
FilterType
似乎与
FilterType
@greuze不一样。我试图理解Generics问题似乎是我在
create(FilterType,T value)
中声明的FilterType参数与值的类型相同。由于
FilterType
的参数是一个通配符-创建等待
?值
-该值不存在。这是正确的吗?
不是回退到
对象吗?当使用另一个类或方法声明中的泛型与另一个方法参数进行比较时,我认为
List
ListNot:(@Skip:No,
表示您不知道它是什么。它可能是
对象
字符串
某些自定义类型
,等等。您的代码必须在不假定它是任何特定类型的情况下工作。