以下の静的クラスを作成したので、クラスごとにインスタンスを作成しなくても、どのクラスでもlejosロボットのセンサーメソッドにアクセスできます。
ただし、ロボットなどのメソッドを呼び出すと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);
}
}