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