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