void testK(ArrayList list) {
for (int y= list.size() ; y > 0 ; y-- ) {
Kostka kst = list.get(y -1);
}}
当我尝试编译此代码时,它说(y -1)
(第 3 行)不兼容
- 但是该
list.size()
方法应该返回一个整数,那么问题是什么?
您正在使用原始类型作为ArrayList
传入的,因此您需要强制转换
Kostka kst = (Kostka) list.get(y -1);
但最好使用泛型来避免强制转换
ArrayList<Kostka> list
您要么必须将结果list.get()
转换为您的类型
Kostka kst = (Kostka)list.get(y -1);
或使用泛型并为您的方法提供通用列表
void testK(ArrayList<Kostka> list)
以您编写代码的方式,get(y - 1)
将返回一个Object
实例。
你必须投它:
Kostka kst = (Kostka) list.get(y -1);
此外,避免使用原始类型,如ArrayList
. 相反,使用通用集合 ( ArrayList<Kostka>
)
首先我建议你使用泛型ArrayList
。
喜欢
void testK(ArrayList<Kostka> list) {
for (int y= list.size() ; y > 0 ; y-- ) {
Kostka kst = list.get(y -1);
}}
或者您需要将从列表中获得的对象转换为您的类型Kostka
void testK(ArrayList list) {
for (int y= list.size() ; y > 0 ; y-- ) {
Kostka kst = (Kostka)list.get(y -1);
}}
增强提示:将-1
a 放在循环的开头,这样可以避免循环list.size()
中的减法。如果可能,请保留final。Koska ksk
for (int y = list.size() - 1; y > 0; y--) {
final Kostka kst = list.get(y);
}