什么样的List是List <object> list = Database.getAllData();?</object>

时间:2013-08-22 09:06:14

标签: java list

我有以下问题:

如果我有以下代码行:

List<Position> allPos = posDBM.getAllPos();

Position是一个对象

posDBM是一个SQLite数据库管理器类,用于管理SQLite数据库, getAllPos()返回所有数据库数据。

getAllPos()的返回类型为List<Position>

如果我想初始化List<>这样的List<Position> pos = new,我必须指定List的类型(ArrayList,LinkedList等)。

回到我的问题,在我从数据库填充列表后,我有什么样的List?

我猜它是ArrayList,但我找不到任何来源支持这个。这只是一个有趣的问题......

6 个答案:

答案 0 :(得分:8)

你不必知道;这才是重点。界面对您而言非常重要,而不是实施。

如果不查看该方法的来源,您无法知道。但即使你这样做,对你的客户来说也是无关紧要的。你所说的都是List方法。

答案 1 :(得分:2)

您将在getAllPos()源代码中找到。由于Polymorphism List<Position>将接受实现List接口的所有类。

答案 2 :(得分:1)

返回的List<Position>是通用列表或Strongly Typed列表。您询问的选项是ArrayList,它指定了可以占用任何对象的列表。使用ArrayList进行书写/阅读时,这将需要开箱装箱和取消装箱。

答案 3 :(得分:1)

理想情况下,您不应该担心实际的实现,一旦从方法调用返回List,您就可以像这样迭代它。

List<Position> allPos = posDBM.getAllPos();
for(Position position : allPos){
   //Your code goes here
 }

如果你想初始化一个新列表,你可以通过使用List接口的不同实现以多种方式完成它,现在你想要选择哪种实现取决于你的要求。

答案 4 :(得分:1)

你只是好奇,然后找到的方法是做这样的事情:

    List<Position> allPos = posDBM.getAllPos();
    System.out.println("The class is " + allPos.getClass().getName());

当然,您不需要 知道...因为您不需要自己实例化列表实现类。数据库管理代码处理它。

答案 5 :(得分:0)

我建议你在posDBM.getAllPos()之后添加一个断点并查看allPos变量,调试器应该告诉你Type。