Как отобразить true, если переменная-член отключена, не меняя тип с void на boolean? - PullRequest
1 голос
/ 17 октября 2019

Я хочу напечатать true в методе main, если переменная-член отключена. Как это сделать, не меняя типы с void на boolean, так как off должен оставаться недействительным.

Код для класса SmartDevice находится здесь

public class SmartDevice extends Device {

    private boolean member;


    public SmartDevice() {

    }


    @Override
    public void on() {

    }

    @Override
    public void off() {

    }
}

Код, где мне нужнотвик,

public class TestDevice {
    public static void main(String[] args) {

       //smart device
        SmartDevice smartDevice = new SmartDevice();

        //up casting
        Device upCastedSmartDevice = new SmartDevice();

        //down casting
        Device device = new SmartDevice();
        SmartDevice downCastedSmartDevice = (SmartDevice) device;

        //call methods
        smartDevice.on();
        smartDevice.off();

        //passing devices into switch methods
        System.out.println();

        //smart device
        aSwitch.turnOn(smartDevice);
        aSwitch.turnOff(smartDevice);
        System.out.println();

        //down casted smart device
        aSwitch.turnOn(downCastedSmartDevice);
        aSwitch.turnOff(downCastedSmartDevice);
        System.out.println();

        //up casted smart device
        aSwitch.turnOn(upCastedSmartDevice);
        aSwitch.turnOff(upCastedSmartDevice);
        System.out.println();

1 Ответ

0 голосов
/ 17 октября 2019

Существует множество возможностей для решения этой проблемы. 1. Добавьте метод, например isOn, в свой класс SmartDevice (рекомендуется)

public boolean isOn() {
  return member;
}

Если вы действительно не хотите изменять свой класс SmartDevice, вы можете использовать Reflection . Но это действительно нарушает контракт вашего дизайна ООП, поэтому я настоятельно отговорил бы сделать это.

Печатайте true в вашем SmartDevice после вызова метода off().

...