我有一个带有Object []的列表,并且我想访问Objects []之一的值。这是我的代码的样子:
private List<Object> trackList;
trackList = new ArrayList<>();
Integer random = (int)(Math.random() * ((100 - 0) + 1)) + 0;
Integer random2 = (int)(Math.random() * ((100 - 0) + 1)) + 0;
Object[] currTrack = new Object[]{random1, random2};
trackList.add(currTrack);
Integer value1 = trackList.get(0)[1];
获取:“预期的数组类型;找到:'java.lang.object'
我认为我缺少一些非常简单的东西。谢谢您的帮助。
答案 0 :(得分:5)
您这样声明列表:
List<Object> trackList;
因此,当您这样做时:
trackList.get(0)
这会让您获得Object
而不是Object[]
。
您需要投射它:
((Object[])trackList.get(0))[1]
但是您还有另一个问题,因为上面的表达式返回了Object
,并且您想将其分配给Integer
。
所以您需要另一个演员..完整行应该是:
Integer value1 = (Integer)((Object[])trackList.get(0))[1];
顺便说一句,只声明列表包含要实际放入的内容会更容易。
答案 1 :(得分:0)
在列表声明中,您设置列表包含对象而不是对象[]:
List<Object> trackList;
因此,当您这样做时:
trackList.get(0)
给您一个对象,而不是一个对象[]
您需要将列表初始化更改为
List<Object[]> trackList;