나는 모든 클래스가 각 클래스에 대한 인스턴스를 만들 필요없이 내 레조 로봇의 센서 메소드에 액세스 할 수 있도록 아래에 정적 클래스를 만들었습니다.정적 클래스가 내 로봇을 충돌시키는 이유는 무엇입니까?
그러나 StandardRobot.motorA.setPower(100)
과 같은 메서드를 호출 할 때마다 내 로봇이 충돌합니다. 정확히 동일한 클래스를 사용하여 로컬 인스턴스를 만들면 정상적으로 작동합니다. 왜 이런거야? 두 번 모두 내 코드가 잘 컴파일되고 런타임에 실패합니다.
import lejos.nxt.*;
public class StandardRobot {
public static ColorSensor colourSensor;
public static TouchSensor touchSensor;
public static UltrasonicSensor ultrasonicSensor;
public static NXTMotor motorA, motorB;
public StandardRobot() {
// instantiate sensors
ultrasonicSensor = new UltrasonicSensor(SensorPort.S1);
colourSensor = new ColorSensor(SensorPort.S2);
touchSensor = new TouchSensor(SensorPort.S4);
//instantiate motors
motorA = new NXTMotor(MotorPort.A);
motorB = new NXTMotor(MotorPort.B);
}
}
를 생성자를 호출 할 때까지'motorA'이 null'가'이기 때문입니다. 인스턴스 생성자 –
에 정적 변수를 할당하면 안됩니다.이 상황에서 충돌이 의미하는 바를 알려 주실 수 있습니까? 예외가 발생합니까? 아니면 VM이 충돌합니까? – stacker
정적 클래스가 아닙니다. 그것은 많은 정적 데이터와 메소드를 가진 클래스입니다. – EJP