我有一个 LinkedHashMap,其中包含一个对象 atkey
和一个 at value
。
我已经使用了代码
yourShots.keySet().toArray()[yourShots.size()-1]
返回 的最后一个对象keys
。但是,我无法访问该对象具有的方法。
我已经使用该getClass()
方法确定我确实拥有正确的对象,但无法调用该方法。我只是得到了找不到方法的错误。
难道我做错了什么?
我有一个 LinkedHashMap,其中包含一个对象 atkey
和一个 at value
。
我已经使用了代码
yourShots.keySet().toArray()[yourShots.size()-1]
返回 的最后一个对象keys
。但是,我无法访问该对象具有的方法。
我已经使用该getClass()
方法确定我确实拥有正确的对象,但无法调用该方法。我只是得到了找不到方法的错误。
难道我做错了什么?
toArray
给你通用Object
类型。在使用它之前,您必须将其转换为您的key
班级。
KeyClass key = (KeyClass) yourShots.keySet().toArray()[yourShots.size()-1];
// Here you can access your desired method
编辑:
正如@rgettman 建议的那样,您可以使用重载版本toArray(T[])
来避免强制转换。keySet()
在这种情况下,您应该预先提供一个大小为的初始化数组。
或者,您可以使用 anIterator
来避免将所有不需要的键复制到数组中,然后将其丢弃。由于是通用的,它还节省了演员表。
Key key = null;
for(Iterator<Key> iterator = yourShots.keySet().iterator(); iterator.hasNext();) {
key = iterator.next();
}
编辑:
您可以将您的转换keySet
为 a List
,然后获取最后一个对象。
像这样的东西:
List<Key> keys = new ArrayList(yourShots.keySet());
Key lastKey = keys.get(keys.size() - 1);
原始帖子
您正在访问错误的方法。
yourShots.keySet()
返回一个Set
包含所有键的Map
.
为了访问地图中的最后一个值,您需要调用:yourShots.values()
希望这可以帮助