Java中的集合可以容纳不同的子类吗?
我有三节课。类Java中的集合可以容纳不同的子类吗?,java,collections,abstract-class,Java,Collections,Abstract Class,我有三节课。类A(抽象类)是类B和类C的父类 我需要一个可以同时容纳B或C对象的容器 我试着这么做 ArrayList<A> myCollection = new ArrayList<A>(); 我得到这个错误: 类型ArrayList中的方法add(A)不适用于参数(B) 是否有一种方法可以在我的ArrayList中存储类B和类C的对象?或者我可以使用其他数据结构吗?试试下面的代码: ArrayList<A> list = new ArrayList<
A
(抽象类)是类B
和类C
的父类
我需要一个可以同时容纳B
或C
对象的容器
我试着这么做
ArrayList<A> myCollection = new ArrayList<A>();
我得到这个错误:
类型ArrayList中的方法add(A)不适用于参数(B)
是否有一种方法可以在我的ArrayList
中存储类B
和类C
的对象?或者我可以使用其他数据结构吗?试试下面的代码:
ArrayList<A> list = new ArrayList<>();
B b = new B();
C c = new C();
// Adding items
list.add(b);
list.add(c);
ArrayList list=new ArrayList();
B=新的B();
C=新的C();
//添加项目
列表.添加(b);
增加(c)项;
试试下面的代码:
ArrayList<A> list = new ArrayList<>();
B b = new B();
C c = new C();
// Adding items
list.add(b);
list.add(c);
ArrayList list=new ArrayList();
B=新的B();
C=新的C();
//添加项目
列表.添加(b);
增加(c)项;
您可以尝试:
ArrayList<? extends A> myCollection = new ArrayList<>();
ArrayList您可以尝试:
ArrayList<? extends A> myCollection = new ArrayList<>();
ArrayList是,请参见以下内容:
public class Fo {
static class A{}
static class B extends A{}
static void f() {
List<A> as = new ArrayList<A>();
as.add(new B());
}
}
公共类Fo{
静态类A{}
静态类B扩展了{}
静态空隙f(){
列表为=新的ArrayList();
as.add(新的B());
}
}
是,请参见以下内容:
public class Fo {
static class A{}
static class B extends A{}
static void f() {
List<A> as = new ArrayList<A>();
as.add(new B());
}
}
公共类Fo{
静态类A{}
静态类B扩展了{}
静态空隙f(){
列表为=新的ArrayList();
as.add(新的B());
}
}
是的,您可以列出超级类
List<A> l = new ArrayList<A>();
l.add(new B());
l.add(new C());
listl=newarraylist();
l、 添加(新B());
l、 添加(新C());
也就是说,100%正确,您有一个超类的列表,并且由于B和C是类a的对象,因此是有效的
并考虑引用对象的接口,您应该赞成使用接口而不是类来引用对象,
如果您养成了使用接口作为类型的习惯,那么您的程序将
更加灵活。如果您决定要切换
实现时,您所要做的就是更改
构造函数(或使用不同的静态工厂)
是的,你可以列一个超级班级的名单
List<A> l = new ArrayList<A>();
l.add(new B());
l.add(new C());
listl=newarraylist();
l、 添加(新B());
l、 添加(新C());
也就是说,100%正确,您有一个超类的列表,并且由于B和C是类a的对象,因此是有效的
并考虑引用对象的接口,您应该赞成使用接口而不是类来引用对象,
如果您养成了使用接口作为类型的习惯,那么您的程序将
更加灵活。如果您决定要切换
实现时,您所要做的就是更改
构造函数(或使用不同的静态工厂)
您确定复制的声明正确吗?没有泛型参数的纯ArrayList应接受任何对象引用。您是否阅读过有关泛型的内容?是否确实正确复制了声明?一个纯泛型列表,没有泛型参数,应该接受任何对象引用。你读过泛型的任何东西吗?并且考虑通过它们的接口引用对象,你应该赞成使用接口而不是类来引用对象,并考虑通过它们的接口引用对象。您应该赞成使用接口而不是类来引用对象,并考虑通过它们的接口引用对象,您应该赞成使用接口而不是类来引用对象,并考虑通过它们的接口引用对象,而应该使用接口而不是类来引用对象,