2014-06-17 4 views
0

Repast Symphony를 사용하여 다중 에이전트 시뮬레이션을 구현 중입니다. 나는 Repast 플랫폼과 아무 관련이 없다고 생각하는 다음과 같은 오류가 발생했습니다. 그래서 여기 간다 : 나는 그것을 구현하는 두 개의 다른 클래스가오류 : 형식에 대한 정의되지 않은 메서드 <Interface>

public interface Located { 
    public int getX(); 
    public int getY(); 
} 

:

내가 인터페이스를 가지고 또한

public class Carrier implements Located{ 
    public int getX(){..} 
    public int getY(){..} } 

public class Gold implements Located{ 
    public int getX(){..} 
    public int getY(){..} } 

내가 구현하는 클래스의 LocateAdder이 다른 내장 된 인터페이스 :

public class LocateAdder<Located> implements GridAdder<Located> { 


@Override 
public void add(Grid<Located> destination, Located object) 
{ 
// TODO Auto-generated method stub 
destination.moveTo(object, object.getX(), object.getY()); 

} 
                   } 

코드를 컴파일 할 수 없습니다. 나는 getX와 getY 아래에 "getX() 메서드가 위치에 대해 정의되지 않았다"라는 빨간 선을 얻는다. 분명히 인터페이스가 두 가지 방법의 서명을 갖고있는 것처럼 이것이 왜 일어나고 있는지 확신 할 수 없습니다. 어떤 일이 일어나고 있는지 알아낼 수 있습니까? 사전에 도움 :) 당신이 Located라는 유형을 그림자 Located라는 새로운 유형의 변수를 선언하고

public class LocateAdder<Located> implements GridAdder<Located> { 

첫 번째 샘플에서

public class LocateAdder implements GridAdder<Located> { 

답변

5

변경 주셔서 감사합니다.

+0

이 오류는 해결되었지만 코드의 다른 곳에서 오류가 발생했습니다. 클래스 LocateAdder의 객체를 다른 클래스 생성자의 매개 변수로 사용하고 거기에서 유형으로 매개 변수화해야합니다. 따라서 이있을 것입니다. 다른 제안? – Evan

+0

@Fonah'LocateAdder'가 generic 일 필요가 있다면,'Located'라는 이름을 쉐이핑하지 않도록 다른 이름을 가진 타입 매개 변수를 선언하십시오. –

+0

제가 이루고자하는 것을 조금 설명해 드리겠습니다. Repast에서 대리인이 사는 그리드를 정의 할 때 에이전트가 그리드 (즉, 위치)에 추가되는 위치를 정의하는 클래스 인 가산기를 결정해야합니다. 그리드의 임의의 위치에 에이전트를 추가하는 랜덤 내장 가산기 만 있습니다. 내 모델에서는 그리드의 미리 결정된 위치에 에이전트를 추가해야하므로 내 가산기를 구현할 수 있다고 생각했습니다. 그렇게하기 위해 Interface Located를 만들었고 Carrier와 Gold 두 명의 에이전트를 구현했습니다. 그럼 내가 해야하는 가산 클래스를 만들었습니다 .. TBC – Evan

관련 문제