Java 如何在另一个列表对象中添加对象
我有一个对象类A和一个列表对象类BJava 如何在另一个列表对象中添加对象,java,list,Java,List,我有一个对象类A和一个列表对象类B A a = a.findById(aId); List<B> b = b.findById(bId); 是否可以在对象列表b中添加对象a 当我尝试在对象列表中添加a时出错。 b.添加(a)这告诉我将对象a更改为ba.. 如何在列表对象b中添加对象a?如果将对象a包装在对象b中,则可以添加对象a。否则,由于类型不匹配,您将无法将类型为a的对象a添加到B对象的列表中:您正在尝试将类型为a的对象添加到B对象的列表中,这在Java中是不允许的 是否可以在
A a = a.findById(aId);
List<B> b = b.findById(bId);
是否可以在对象列表b
中添加对象a
当我尝试在对象列表中添加a
时出错。
b.添加(a)代码>这告诉我将对象a
更改为ba..
如何在列表对象b
中添加对象a
?如果将对象a
包装在对象b
中,则可以添加对象a
。否则,由于类型不匹配,您将无法将类型为a
的对象a
添加到B
对象的列表中:您正在尝试将类型为a
的对象添加到B
对象的列表中,这在Java中是不允许的
是否可以在对象列表b
中添加对象a
简单地说,不,因为它们不是同一类型
如何将对象a添加到列表对象b中
为了将类A
和类B
的两个实例添加到一个集合中,您可以采取的一种方法是创建一个接口,在该接口中类A
和类B
都可以实现
示例:
public interface ISomeInterface {
// define some methods in which both class `A` and `B` share
}
然后让类实现接口
接口:
public class A implements ISomeInterface {
}
public class B implements ISomeInterface {
private int id;
private A a;
}
然后你可以这样做:
List<ISomeInterface> b = new ArrayList<>();
b.add(new A());
b.add(new B());
// note you can only call methods through which the interface defines
// another solution is to cast the types, that way you can invoke the methods that belong to each type
// make use of instanceof keyword to prevent exception
listb=newarraylist();
b、 添加(新的A());
b、 添加(新b());
//注意:您只能调用接口定义的方法
//另一个解决方案是强制转换类型,这样您可以调用属于每个类型的方法
//使用instanceof关键字防止异常
或者干脆不需要制作接口:
List<Object> b = new ArrayList<>();
b.add(new A()); //if you want to call the methods of A or B you need to cast it first, remember to use instanceof keyword prior to casting
b.add(new B());
listb=newarraylist();
b、 添加(新的A())//如果要调用A或B的方法,需要先对其进行强制转换,请记住在强制转换之前使用instanceof关键字
b、 添加(新b());
将a添加到B的语法是首先获取B,然后将a添加到B,例如
A a = new A();
B b = new B();
b.add(A);
如果您希望将两者添加到相同的列表中
,则它们需要实现相同的或从同一类继承,例如interfaceIAB
List<IAB> list = new ArrayList<>();
list.add(new A());
list.add(new B());
请注意,在这种情况下,您只能调用接口上可用的方法,除非您将其强制转换到类中(但如果您混合了A和B,这可能很难处理)否,香蕉不能添加到苹果列表中。因为香蕉不是苹果。
List<IAB> list = new ArrayList<>();
list.add(new A());
list.add(new B());
public interface IAB{}
public class A implements IAB{}
public class B implements IAB();