Java 尝试使用泛型创建子类型类

Java 尝试使用泛型创建子类型类,java,generics,Java,Generics,我在尝试创建一个子类型类时遇到了问题,并使用特定泛型类型的对象的ArrayList调用了它的超构造函数。我正在努力让这个代码正常工作。我希望我的子类型只接受类型为X的泛型对象的列表 public class SubType extends SuperType{ public SubType(ArrayList<GenericObject<Y>> g) { super(g); } } pub

我在尝试创建一个子类型类时遇到了问题,并使用特定泛型类型的对象的ArrayList调用了它的超构造函数。我正在努力让这个代码正常工作。我希望我的子类型只接受类型为X泛型对象的列表

    public class SubType extends SuperType{

        public SubType(ArrayList<GenericObject<Y>> g) {
            super(g);
        }
    }

    public class SuperType {

        public ArrayList<GenericObject<?>> data = new ArrayList<GenericObject<? extends X>>();

        public SuperType(ArrayList<GenericObject<? extends X>> series) {

            data.addAll(series);
        }
    }


    class GenericObject<T extends X>{}
    class X{};
    class Y extends X{};
公共类子类型扩展了超类型{
公共子类型(ArrayList g){
超级(g);
}
}
公共类超类型{

公共ArrayList您的问题是
ArrayList
不扩展
ArrayList
,即使
Child
扩展
Parent

但是,您以前的做法是正确的,因为
ArrayList
确实扩展了
ArrayList>data=new ArrayList您的问题是
ArrayList
没有扩展
ArrayList
,即使
扩展了

但是,您以前的做法是正确的,因为
ArrayList
确实扩展了
ArrayList>data=new ArrayList您可能正在寻找此解决方案吗

class SubType extends SuperType<Y> {

    public SubType(List<GenericObject<Y>> g) {
        super(g);
    }
}

class SuperType<T extends X> {

    public List<GenericObject<T>> data = new ArrayList<GenericObject<T>>();

    public SuperType(List<GenericObject<T>> series) {
        data.addAll(series);
    }
}

class GenericObject<T extends X>{}
class X{};
class Y extends X{};
类子类型扩展了超类型{
公共子类型(列表g){
超级(g);
}
}
类超型{
public List data=new ArrayList();
公共超类型(列表系列){
data.addAll(系列);
}
}
类GenericObject{}
类X{};
类Y扩展X{};

您是否正在寻找此解决方案

class SubType extends SuperType<Y> {

    public SubType(List<GenericObject<Y>> g) {
        super(g);
    }
}

class SuperType<T extends X> {

    public List<GenericObject<T>> data = new ArrayList<GenericObject<T>>();

    public SuperType(List<GenericObject<T>> series) {
        data.addAll(series);
    }
}

class GenericObject<T extends X>{}
class X{};
class Y extends X{};
类子类型扩展了超类型{
公共子类型(列表g){
超级(g);
}
}
类超型{
public List data=new ArrayList();
公共超类型(列表系列){
data.addAll(系列);
}
}
类GenericObject{}
类X{};
类Y扩展X{};

可能。我不认为我可以将泛型添加到sub和super类型。我会给你回复无需将这些类型设置为泛型IMHO,这有点过分了。可能。我不认为我可以将泛型添加到sub和super类型。我会给你回复无需将这些类型设置为泛型IMHO,这有点过分了。@OliverWatkins就在这里,我添加了它back.我删除了它,因为它与您的代码完全相同。我刚刚更改了
超类型
构造函数。@OliverWatkins就在这里,我重新添加了它。我删除了它,因为它与您的代码完全相同。我刚刚更改了
超类型
构造函数。
public class SubType extends SuperType{

    public SubType(ArrayList<GenericObject<Y>> g) {
        super(g);
    }
}

public class SuperType {

    public ArrayList<GenericObject<?>> data = new ArrayList<GenericObject<? extends X>>();

    public SuperType(ArrayList<? extends GenericObject<? extends X>> series) {

        data.addAll(series);
    }
}


class GenericObject<T extends X>{}
class X{};
class Y extends X{};
class SubType extends SuperType<Y> {

    public SubType(List<GenericObject<Y>> g) {
        super(g);
    }
}

class SuperType<T extends X> {

    public List<GenericObject<T>> data = new ArrayList<GenericObject<T>>();

    public SuperType(List<GenericObject<T>> series) {
        data.addAll(series);
    }
}

class GenericObject<T extends X>{}
class X{};
class Y extends X{};