Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在另一个列表对象中添加对象_Java_List - Fatal编程技术网

Java 如何在另一个列表对象中添加对象

Java 如何在另一个列表对象中添加对象,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和一个列表对象类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中是不允许的

是否可以在对象列表
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);
如果您希望将两者添加到相同的
列表中
,则它们需要实现相同的或从同一类继承,例如interface
IAB

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();