내가 메인 클래스와 주요 방법을 다음 한 한 단계에서 각각 다른 두 개체를 전달자바
class Tom extends Enemy {
Enemy peter;
Tom(Main main) {
this.peter = main.peter;
}
}
class Peter extends Enemy {
Enemy tom;
Peter(Main main) {
this.tom = main.tom;
}
}
주 메서드에서 두 가지 인쇄 메서드를 실행하면 첫 번째 메서드는 톰이 creat이 아니기 때문에 null을 반환합니다. 그때 그것은 Enemy tom
에 할당됩니다. 이 문제를 해결하기 위해 Tom
및 Peter
을 생성자의 Enemy
에 할당하지 않고 두 개체를 만든 후에 메서드를 할당했습니다. 그래서 더이 같은 는 :
private void setEnemies(){
peter.tom = tom;
tom.peter = peter;
}
, 그것은 완벽하게 작동합니다. 내 질문은 : 개체를 만든 후 별도의 메서드를 호출 할 필요가 없도록 개체 생성시 적을 설정하는 방법이 있습니까?
주,'* 안전하지 않은 출판 *의 예입니다 : 당신은 'Main'이 완전히 초기화되기 전에'Main' 참조를'Peter'의 생성자에 전달하고 있습니다. 이것은'Peter '가 유효한 상태에 있기 전에'Main'을 사용하여 작업을 시작할 수 있다는 것을 의미합니다. 예기치 못한 예측 불가능한 결과가 발생할 수 있습니다. –
저는 현재 프로젝트에서 다른 클래스의 생성자로부터'Peter'와'Tom'을 만듭니다. 코드를 단순화하기 위해이 방법으로 게시했습니다. –
'RadioButton'에 단일 RadioButtonGroup을 추가하여 동일한 작업을 공장에 추가했습니다. 그런 다음 RadioButtonGroup은 모든 라디오 버튼이 서로 관련되도록합니다. –