프로그래밍이 완전히 새로워졌습니다. 디버그하기 힘든 버그가 있습니다. 지난 며칠 동안 에 대한 문제를 해결하려고했습니다. 그렇게함으로써 거의 히스테릭 상태에 빠졌습니다. 앉아서 그냥 임의의 페이지에서 Java 책을 읽으려고 결정했습니다. 이 페이지는 가변 섀도 잉에 관한 내용이었습니다. 그런 다음 갑자기 내 코드에서이 말도 안되는 것을 깨달았습니다. 동일한 변수를 두 번 선언합니다. 나는 그것을 제거하고 버그가 기화하는 것처럼 보였다.그림자가있는 변수입니까?
public class Action extends JPanel {
private final Color BACKGROUND_COLOR = Color.BLACK; //JPanel background
private GameMemory memory = new GameMemory();
private int[][] grid = memory.getGrid();
public static Color penColor = Color.GRAY; //Variable for
//color
public Action() { //Setting everything for JPanel
memory = new GameMemory();
grid = memory.getGrid();
setBackground(BACKGROUND_COLOR);
setMinimumSize(new Dimension(360, 720));
setPreferredSize(new Dimension(360, 720));
setMaximumSize(new Dimension(360, 720));
setVisible(true);
new Timer(100, new TimerListener()).start();
//Setting Everything for keylistener
this.setFocusable(true);
this.requestFocus();
this.addKeyListener(new MyKeyListener());
}
그럼 너희들은 어떻게 생각하니? 이것은 정말로 그림자 사건입니까?
그래서이 특정 스 니펫에서는 어떤 식 으로든 코드에 영향을주지 않습니까? 재 할당 일 뿐이에요? – user3081519
그래서 메모리와 그리드 상단에 정의 된 인스턴스 변수는 누가 클래스이고 메모리와 생성자의 그리드는 ... 생성자에 대한 로컬입니까? 이것은 생성자가 자체 범위가있는 메서드임을 의미합니까? – user3081519
@ user3081519 먼저 클래스에서 초기화되고 생성자에서 재정의됩니다. 여기에 범위가 없습니다. –