현재 Android 용 Java에서 2D 게임 엔진을 만들고 있습니다. 엔진은 기본적으로 엔티티 구성 요소 시스템입니다. 먼저 구성 요소 유형을 연결할 수있는 청사진 (id에 대한 래퍼)을 만듭니다. 나중에 청사진을 "빌드"할 수 있습니다. 즉, 청사진과 연관된 각 유형의 객체가 초기화되어 업데이트 루프에 놓입니다. 구성 요소에 액세스 할 수있는 엔티티 (또한 int id에 대한 랩퍼)가 리턴됩니다.생성자 지정, 나중에 초기화 (Java)
개체를 추가 할 때 개체가 초기화되지 않습니다. 즉, 그 당시 생성자를 제공 할 수 없다는 것을 의미합니다. 어떻게 든 해결하고 싶습니다.
이 내가 현재 청사진 구성 요소 유형을 연결하는 방법입니다
public <T extends Component> void addComponent(BluePrint bluePrint, Class<T> type) {
bluePrintMap.get(bluePrint.getId()).add(type);
}
ID는 방법 참조를 반환하거나 addComponent 인수로 생성자 매개 변수를 제공하고 나중에 사용할 수 있도록 저장하는 것을 좋아합니다. 나는 심지어 생성자 인수의 길이를 미리 알지 못하기 때문에이 문제에 접근하는 방법을 모르겠습니다. 모든 입력이 무시됩니다.
편집 : 가능한 해결책은 실제로 구성 요소의 인스턴스를 만들고 나중에 사용자가 청사진을 작성하기로 결정할 때 복사본을 만드는 것이지만 이는 다른 문제를 일으킬 수 있습니다.
1) 일반적인 접근 방식이 효과적 일 수 있습니다. 2) 다양한 인수가있는 메소드를 사용하여 "얼마나 많은 인수가 있는지"문제를 해결할 수 있습니다 (https://docs.oracle.com/javase/8/docs/technotes/guides/language/varargs를 참조하십시오). .html) 또는'Collection' 또는 배열 객체를 전달할 수 있습니다. –
@StephenC 올바른 방향으로 나를 가리켜 주셔서 감사합니다 – Tagor
나는 당신의 질문을 따르고 있는지 잘 모르겠다. 그러나 당신은'Supplier'을 전달할 수 있었는데, 이것은 만들어 질 때 호출 될 공장이되었다. 구성 요소? –