2013-06-13 3 views
1
void testK(ArrayList list) { 
     for (int y= list.size() ; y > 0 ; y--) { 
      Kostka kst = list.get(y -1); 
     }} 

이 코드를 컴파일하려고, 그것은 (y -1) (3 선)자바 - "에 대한 루프"- 호환되지 않는 유형의

  • 하지만 list.size() 방법은 정수를 반환해야 호환되지 않는 것을 말한다 그래서 뭐가 문제 야?
+1

전체 스택 추적을 게시하십시오. – Doorknob

+3

당신의'ArrayList'는 어떤 타입입니까? 그것은'ArrayList list'이어야합니다 –

+0

@Doorknob 그는 컴파일러 오류 – pinkpanther

답변

10

그러므로 당신은 당신이

Kostka kst = (Kostka) list.get(y -1); 

캐스팅 할 필요가 있지만, 더 나은 당신은 캐스팅이 중

ArrayList<Kostka> list 
+0

을 추가하면 올바르게 작동합니다. 감사합니다. – user2347921

7

지지 않도록 제네릭을 사용하여, 전달 된 ArrayList에 대한 raw type를 사용하는 귀하의 타입에 의 결과

Kostka kst = (Kostka)list.get(y -1); 

또는 제네릭 작동하고 당신이 당신의 코드를 작성 한 방법으로 당신의 방법

void testK(ArrayList<Kostka> list) 
1

에 일반적인 목록을 제공의 get(y - 1)Object 인스턴스를 반환합니다.

당신은 캐스팅해야 :

Kostka kst = (Kostka) list.get(y -1); 

는 또한, ArrayList처럼 원시 타입을 사용하지 마십시오. 대신 일반 컬렉션 ( ArrayList<Kostka>)을 사용하십시오.

1

먼저 ArrayList에 제네릭을 사용하는 것이 좋습니다. 당신이 피할 수 있도록, 루프의 시작 -1을 넣어 :

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); 
     }} 
0

팁을 목록에서 가져온 루프에있는 list.size() 하위. 가능하면 Koska ksk으로 유지하십시오.

for (int y = list.size() - 1; y > 0; y--) { 
    final Kostka kst = list.get(y); 
} 
관련 문제