java泛型子类型列表和方法错误
Java泛型 我是一个新手,泛型尝试创建一个列表,该列表接受A的子元素作为参数 我写了下面的代码,问题的底部有一个错误。感谢您的帮助java泛型子类型列表和方法错误,java,generics,Java,Generics,Java泛型 我是一个新手,泛型尝试创建一个列表,该列表接受A的子元素作为参数 我写了下面的代码,问题的底部有一个错误。感谢您的帮助 abstract class A{ .. } class A1 extends A{ .. } class A2 extends A{ .. } 我想申报一份清单 public class Model{ private List<? extends A> items; public <S extends A> void
abstract class A{
..
}
class A1 extends A{
..
}
class A2 extends A{
..
}
我想申报一份清单
public class Model{
private List<? extends A> items;
public <S extends A> void add(S item){
items.add(item); // error on this line
}
}
公共类模型{
private List为什么不使用以下语法而不是泛型
public class Model
{
private List<A> items ;
public void add(A item)
{
}
}
公共类模型
{
私人清单项目;
公共作废添加(项目)
{
}
}
这是因为泛型是不变的
private List<? extends A> items;
public <S extends A> void add(S item) {
items.add(item);
}
S
是Animal
的特定子类型,但编译器不知道是哪种类型。可能是items
只包含Bird
S,我们正试图添加一个Cat
在鸟类列表中添加一个Cat意味着麻烦,不是吗?items
的类型参数根本不知道我们不能简单地将Cat
添加到Dog
s列表中,因此会出现错误
怎么办? 只需删除通配符
List<A> items;
public void add(A item) {
this.items.add(item);
}
列表项;
公共作废添加(项目){
此.items.add(item);
}
…或使类成为泛型:
class Model<T> {
List<T> items;
public void add(T item) {
this.items.add(item);
}
}
类模型{
清单项目;
公共作废新增(T项){
此.items.add(item);
}
}
下面的代码是哪个类?我更新了我的问题,例如Model类在下面哪行发生错误?我认为您缺少了部分代码..是否尝试将输入项添加到列表中?是否尝试执行项。添加(项)Model::add
中的
?给出的代码没有显示任何错误。缺少实际导致错误的部分。您给出的消息表明您正在尝试在此方法内执行某些操作,或者尝试从其他地方调用它;请将您的完整代码显示为MCVE,好吗?这是泛型。抱歉,我是ref避免这样的注释“这不能回答问题。非常感谢,你解释得很好,我不知道有什么理由将此问题标记为否定:(
class Model<T> {
List<T> items;
public void add(T item) {
this.items.add(item);
}
}