AnyLogic의 Agents
을 abstract
으로 표시 할 수 있습니까? 그렇다면 어떻게? 난 Agent
에서 특정 방법을 상속하려고하지만 다른 사람들은 Agent
부모가 구현하도록하는 것이 바람직하지 않으므로 다른 방법은 상속 받고 싶습니다.에이전트를 추상으로 표시 하시겠습니까?
답변
당신은 아무것도 abstract
(클래스 나 메소드 (AnyLogic 기능))를 선언 할 수 GUI 디자인 된 새로운 통해 에이전트,하지만 당신은 즉, 사용자 정의 Java 클래스 (같은 에이전트를 만들 수 있습니다 -> 자바 클래스)는 abstract
입니다. AnyLogic이 문서화하지 않은 적절한 생성자 시그니처를 알아야합니다 (그러나 생성 된 Java 코드를 모든 에이전트에 대해보기 만하면 쉽게 볼 수 있습니다). 이들를하는 것이 바람직 할 것입니다, 당신은 아마이 아닌 추상적 인 방법으로 혼합 원하기 때문에, 그러나
public abstract class MyAbstractAgent extends Agent
implements java.io.Serializable {
private static final long serialVersionUID = 1L;
/**
* Constructor in form required for an Agent subclass to be instantiated and for
* superclass instantiation (as gleaned from looking at Java source of
* visually-created Agents)
*/
public MyAbstractAgent(Engine engine,
Agent owner,
AgentList<? extends MyAbstractAgent> collection) {
super (engine, owner, collection);
}
/*
* Simple constructor as now included in all AnyLogic 7 generated Agent code. Don't
* understand when this would be invoked cf. the others so let's assert that we
* don't think it should
*/
public MyAbstractAgent() {
throw new AssertionError("Not expecting simple constructor to be used!");
}
// Using package visibility (the default for GUI-designed functions)
abstract specialAbstractFunction();
}
: 당신은 그러므로 아래 (사용되지 결코 보인다 기본 생성자를 주) 등 뭔가를 할 것입니다 GUI로 설계된 에이전트 (따라서 extends MyGUI_Agent
이상의 클래스)이지만, 인에 추상 메소드 (따라서 '불필요한'상속 레벨)가있는 추상 에이전트가 있어야합니다.
대체 방법은 추상 클래스를 'approximate'하는 것입니다. 런타임은 모든 하위 클래스 에이전트에서 (오버라이드 된) 메소드를 준수해야합니다. 그냥 같은로서 부모에 필요한-에-서브 에이전트 함수를 정의 :
throw new IllegalStateException("Subclass must implement specialAbstractMethod()");
(또는, 더 나은 자신을 던져 MissingRequiredOverrideException
또는 이와 유사한 것). 순수 주의자는 아니지만 다른 방법은 없습니다.
필자는 AnyLogic 컨텍스트에서 (적어도 향후 유지 보수 담당자에게) 더 이해하기 쉬운 (논쟁의 대상이되는 : P) 후자의 경로를 취했습니다. 이것은 내가 찾고 있었던 바로 그 것이다 - 고맙다! –
좋습니다. 나는 추상적이고 추상적이지 않은 방법을 혼합하는 것을 의미하는 것을 명확히하기 위해 '후손을 위해'사소한 편집을했다. (내가 생각하기에 이치에 맞았지만, 완벽을 위해서 ...) –
- 1. iPhone 사용자 에이전트를 변경 하시겠습니까?
- 2. Android에서 기본 사용자 에이전트를 설정 하시겠습니까?
- 3. 자바 서블릿에서 JADE 에이전트를 호출 하시겠습니까?
- 4. 기계어로 HTTP 사용자 에이전트를 설정 하시겠습니까?
- 5. 'fat jar'안에 자바 에이전트를 지정 하시겠습니까?
- 6. Java 인터페이스 메소드를 추상으로 선언하는 이유는 무엇입니까?
- 7. 오류 : 클래스는 추상으로 선언되거나 나머지 메서드를 구현해야합니다.
- 8. HttpServlet 클래스를 추상으로 선언해야하는 이유는 무엇입니까?
- 9. TDD, 클래스 함수를 추상으로 옮긴 후 리팩토링
- 10. FacesContext의 인스턴스가 어떻게 추상으로 만들어 졌는가?
- 11. 내 둥지 클래스가 추상으로 간주되는 이유는 무엇입니까?
- 12. Delphi 클래스가 추상으로 선언되었는지 확인하는 방법은 무엇입니까?
- 13. 추상 수퍼 클래스의 모든 메소드를 추상으로 선언해야합니까?
- 14. 스핑크스 문서에서 멤버를 추상으로 주석 처리하는 방법은 무엇입니까?
- 15. mongod 서비스 구성 : 데몬을 시작하거나 에이전트를 시작 하시겠습니까?
- 16. WPF/XAML 웹 브라우저 컨트롤에서 사용자 에이전트를 변경 하시겠습니까?
- 17. SQL 주입을 피하기 위해 사용자 에이전트를 데이터베이스에 저장 하시겠습니까?
- 18. 사용자 에이전트를 기반으로 magento admin에 대한 액세스를 제한 하시겠습니까?
- 19. SNMP4J 에이전트를 테스트하는 방법
- 20. 공간으로 에이전트를 이동하는 방법
- 21. 어떤 사용자 에이전트를 사용해야합니까?
- 22. 에이전트를 사용하여 작업 동기화
- 23. 브라우저별로 사용자 에이전트를 그룹화하십시오.
- 24. 대괄호 - DOM 에이전트를 활성화해야합니다.
- 25. 누가 'zxing.org'사용자 에이전트를 보냅니다.
- 26. xpages가 서명자로 에이전트를 실행합니다.
- 27. Xpages에서 lotusscript 에이전트를 실행하십시오.
- 28. 현재 사용자 에이전트를 얻는 방법은 무엇입니까?
- 29. UITextField에 답변을 표시 하시겠습니까?
- 30. 그리드에 항목을 표시 하시겠습니까?
일부 설명 코드가 포함 된 경우 귀하의 질문에 더 나은 것입니다. –
예/아니오 질문입니다. 그들은 추상적 일 수 있는가, 그렇지 않느냐? –