我想知道我是否可以拥有一个数组(或基本上是一个表),其中每个元素都是一组不同类型的对象。我的意思是我想创建这样的东西(我知道它的语法不正确,只是想表明我的想法):
List<String, int, double, Date, ... , etc > list_name
我这样做是为了确保当我将所有这些信息保存到我的数据库时,我将把所有这些信息都放在数据库的同一条目中。这是因为我从不同的站点进行了一些网络抓取以收集所有这些数据,即在列表中,字符串可能来自站点A,int可能来自站点B等。我发现某些信息可能由于某些原因而错过(比如说,对于列表的特定元素,来自站点A的字符串可能会丢失,其他数据就在那里,非常好。)。如果我将这些数据存储到单独的列表中,我担心会有一些不匹配的数据。
现在我的解决方案是创建一个类,比如ClassA:
ClassA{
public String info1
public int info2
public double info3
..
..
public wtever info
}
然后我会有一个ClassA列表
我想知道是否有更好的方法来实现这一目标?
答案 0 :(得分:5)
我这样做是为了确保当我将所有这些信息保存到我的数据库时,我将把所有这些信息都放在数据库的相同条目中。
是的,你通过创建一个包含所有值的类来完成正确的事情。
并且,正如您已经注意到的,如果您希望执行多个数据库插入/更新,则可以创建此List
个对象。
许多持久性方案在定义类(称为DAOs)的基础上运行,以表示存储在各个表中的数据。使用支持注释类的持久性提供程序(例如Hibernate)可以真正简化与数据库的交互。我会更详细地推荐你research this topic。
答案 1 :(得分:3)
您可以使用简单List<java.lang.Object>
,因为Java中的所有类都是java.lang.Object
的子类。但是,这很容易出错,并且如果您不小心处理它,可能会在运行时抛出ClassCastException。就像你提到的那样List<ClassA>
是正确的。但在设计时请确保ClassA
的所有内容都正确。
答案 2 :(得分:1)
你可以做的是制作一个抽象超级类,你的所有类都将扩展,然后列出一个。任何扩展这个超类的类都将适合同一个列表。
只需确保在操作集合时找出要处理的对象类型。
public abstract class ClassA {
// Empty
}
public class ClassB extends ClassA {
// something something
}
public class ClassC extends ClassA {
}
public class main {
List<ClassA> list.....
}
答案 3 :(得分:1)
我会这样做,即创建一个表示你要保存的东西的对象(可能隐藏了一个域概念?)然后有一个这种类型的列表。
答案 4 :(得分:1)
创建一个用于保存这些不同类型属性的类的方法似乎很好。
然后,您可以使用ArrayList
,List
接口的实现,如下所示:
ArrayList<ClassA> list = new ArrayList<ClassA>();
然后你可以轻松地填充和操作它。
对于您的数据库操作,我建议您使用 DAO(数据访问对象)类和映射器类来促进对数据源的持久性操作。
答案 5 :(得分:0)
由于Java中的所有对象(具有审核的真实性)都继承自Object
,因此您可以编写List<Object>...
并在需要时将对象强制转换为对象。请记住,这需要您绝对控制不同对象的类。