2014-02-10 5 views
-1

arraylist를 만들었습니다.ArrayList에 저장된 객체에 액세스 할 수 없습니다.

List FWD = new ArrayList<Coords>(); 
FWD.add(new Coords(42.41, 37.23)); 
FWD.add(new Coords(37.09, 47.8)); 
FWD.add(new Coords(36.83, 48.42)); 

후, 나는 이런 식으로리스트의 각 요소에 액세스하려면 :

FWD.get(3).[some method from Coords class] 

를하지만, 넷빈즈는 말한다 :

기호 기호를 찾을 수 없습니다 : 방법 getIndexX() 위치 : 클래스 오브젝트

코드 클래스 :

public class Coords { 
    private double weightY, indexX; 

    Coords(double x, double y){ 
     setIndexX(x); 
     setWeightY(y); 
    } 

    public double getWeightY() { 
     return weightY; 
    } 

    public void setWeightY(double weightY) { 
     this.weightY = weightY; 
    } 

    public double getIndexX() { 
     return indexX; 
    } 

    public void setIndexX(double indexX) { 
     this.indexX = indexX; 
    } 
} 
+3

'목록 FWD = 새로운 ArrayList를 ()를 사용해야합니다. 또한 배열은 0 개의 기본 인덱스를 가지므로리스트의 마지막 요소를 얻으려면'FWD.get (2);'이어야합니다. –

답변

2

변수 FWD는 List이고 실제는 ArrayList<Coords>이며 List<Coords>이지만 컴파일러는이를 모릅니다. FWDList<Coords>으로 선언 된 경우이 코드는 그대로 작동해야합니다.

Java 목록은 0 색인이므로 목록의 세 번째 요소는 색인 2를 가지므로주의해야합니다. 예를 들어 제공된 예제에서는 검색된 요소가 없지만 실행 시간.

마지막으로 Java 규칙에 따라 camelCase의 변수 이름이 지정되므로 변수의 이름을 fwd 또는 그와 비슷한 이름으로 지정하는 것이 좋습니다 (지나치게 지나치게 많지 않은 경우 전체 단어 사용). 사실

2

변화에

List FWD = new ArrayList<Coords>(); 

:

List<Coords> FWD = new ArrayList<Coords>(); 
+0

이 하나가 더 좋아 보인다 (자바 1.7부터 사용할 수있다) 리스트 FWD = new ArrayList <>(); – pshemek

1

사용하십시오 :

List<Coords> FWD = new ArrayList<Coords>(); 

컴파일러가 FWD가 Coords의 목록을 보유하고 있음을 알고이 방법.

0

당신이

List<Object> FWD = new ArrayList<Coords>(); 

을 다음과 같이 JVM이 목록을 만들 것입니다 의미하고 get()를 사용하는 경우, 그것은 Object 클래스의 객체를 반환하고 당신이 방법 getIndexX() 호출 할 때

List FWD = new ArrayList<Coords>(); 

를 사용하는 이 메서드는 Object 클래스에는 존재하지 않기 때문에 컴파일 타임에 예외 또는 오류가 발생합니다. `;

따라서, 당신은

List<Coords> FWD = new ArrayList<Coords>(); 
관련 문제