Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 列表是什么类型的列表<;对象>;list=Database.getAllData();?_Java_List - Fatal编程技术网

Java 列表是什么类型的列表<;对象>;list=Database.getAllData();?

Java 列表是什么类型的列表<;对象>;list=Database.getAllData();?,java,list,Java,List,我有以下问题: 如果我有以下代码行: List<Position> allPos = posDBM.getAllPos(); List allPos=posDBM.getAllPos(); 位置是一个对象 posDBM是一个SQLite数据库管理器类,用于管理SQLite数据库, getAllPos()返回所有数据库数据 getAllPos()的返回类型是List 如果我想像这样初始化一个列表,我必须指定列表的类型(ArrayList、LinkedList等) 那么回到我的问题,

我有以下问题:

如果我有以下代码行:

List<Position> allPos = posDBM.getAllPos();
List allPos=posDBM.getAllPos();
位置
是一个对象

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

getAllPos()
的返回类型是
List

如果我想像这样初始化一个
列表
,我必须指定
列表的类型(ArrayList、LinkedList等)

那么回到我的问题,在我从数据库中填写了列表之后,我有什么样的列表


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

你不必知道;这就是重点。接口对您来说很重要,而不是实现


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

,您可以在getAllPos()源代码中找到这些方法<代码>列表
由于多态性,将接受实现列表接口的所有类。

返回的
列表
是泛型或
强类型的
列表。您询问的选项是关于
ArrayList
,它指定了一个可以容纳任何对象的列表。这将需要在使用
ArrayList

写入/读取时进行装箱和取消装箱的开销。我建议您在posDBM.getAllPos()之后添加一个断点并查看allPos变量,调试器应该告诉您类型。

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

List<Position> allPos = posDBM.getAllPos();
for(Position position : allPos){
   //Your code goes here
 }
List allPos=posDBM.getAllPos();
用于(位置:allPos){
//你的密码在这里
}

如果您想初始化一个新列表,您可以通过使用列表接口的不同实现以多种方式进行初始化,现在您要选择的实现在很大程度上取决于您的需求。

如果您只是好奇,那么一种方法是执行以下操作:

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

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

您是否尝试过getClass().getName()?您只需调试一下,看看列表实现是什么。或者看到消息来源返回列表。好的,谢谢你的快速回答。我只是想知道,这只是一个出于兴趣的问题,我不是针对实际的乌萨热诺问题,保持兴趣:)