Java 如何在容器中存储不同类型的对象?

Java 如何在容器中存储不同类型的对象?,java,containers,Java,Containers,我想知道是否可以有一个数组(或者基本上是一个表),其中每个元素都是一组不同类型的对象。我的意思是我想创建这样的东西(我知道它的语法不正确,只是想展示一下我的想法): 然后我会有一个a类的列表 我想知道是否有更好的方法来实现这一点?您可以做的是,创建一个抽象的超类,您的所有类都将扩展它,然后列出它。任何扩展这个超类的类都将放入同一个列表中 在操作集合时,只需确定您正在处理的对象类型 public abstract class ClassA { // Empty } public clas

我想知道是否可以有一个数组(或者基本上是一个表),其中每个元素都是一组不同类型的对象。我的意思是我想创建这样的东西(我知道它的语法不正确,只是想展示一下我的想法):

然后我会有一个a类的列表


我想知道是否有更好的方法来实现这一点?

您可以做的是,创建一个抽象的超类,您的所有类都将扩展它,然后列出它。任何扩展这个超类的类都将放入同一个列表中

在操作集合时,只需确定您正在处理的对象类型

public abstract class ClassA {
    // Empty
}

public class ClassB extends ClassA {
    // something something
}

public class ClassC extends ClassA {

}

public class main {
    List<ClassA> list.....
}
公共抽象类ClassA{
//空的
}
公共类ClassB扩展了ClassA{
//什么东西
}
公共类ClassC扩展了ClassA{
}
公共班机{
名单。。。。。
}
由于Java中的所有(有节制的真理)对象都继承自
对象
,因此您可以编写
列表…
并在需要时在其中强制转换对象。请记住,这要求您绝对控制不同对象的类别

我这样做是为了确保当我将所有这些信息保存到我的数据库中时,我将所有这些信息都保存在数据库中的同一个条目中

是的,通过创建一个类来保存所有值,您已经做了正确的事情

而且,正如您已经注意到的,如果您希望执行多个数据库插入/更新,则可以创建此对象的
列表


许多持久性方案基于定义类(称为)来表示存储在各个表中的数据。使用支持注释类(例如)的持久性提供程序可以真正简化与数据库的交互。我建议您提供更详细的信息。

我也会这样做,即创建一个对象,表示要保存的内容集(可能后面隐藏了一个域概念?),然后创建一个该类型的列表。

您创建一个类来保存这些不同类型的属性的方法似乎不错。 然后可以使用
ArrayList
,这是
List
接口的一个实现,如下所示:

ArrayList<ClassA> list = new ArrayList<ClassA>();
ArrayList list=new ArrayList();
然后您可以轻松地填充和操作它


对于您的数据库操作,我建议您使用DAO(数据访问对象)类和mapper类来方便您对数据源的持久化操作。

您可以使用简单的
列表
,因为Java中的所有类都是
Java.lang.object
的子类。然而,这很容易出错,如果您不小心处理,可能会在运行时抛出ClassCastException。正如您所提到的,列表将是正确的。但是,在设计ClassA时,请确保它一切正常。

不要使用泛型,我的意思是它可以与JDK 1.4配合使用,但这不是推荐的解决方案…:Pa根据我的说法,这是一个很好的解决方案,但有一点是正确的,那就是你必须非常小心类型安全。如果你仔细阅读这个问题,我认为这不是一个好的解决方案。一个
列表
对象
不会做同样的事情吗?是的,但是你可能对类型转换有问题。这正是我想要的。然后使用“instanceof”检查此对象是从哪个类创建的,然后将对象强制转换为相应的类型。
public abstract class ClassA {
    // Empty
}

public class ClassB extends ClassA {
    // something something
}

public class ClassC extends ClassA {

}

public class main {
    List<ClassA> list.....
}
ArrayList<ClassA> list = new ArrayList<ClassA>();