Как получить доступ к логическому значению из другого класса в конструкторе объекта?
Итак, у меня есть основной класс, и в этом классе у меня есть логическое значение с именем test. Я хочу иметь возможность включать или выключать его через определенное время, поэтому у меня есть класс с именем BooleanFlipCounter. Ниже
public class BooleanFlipCounter implements Runnable {
int seconds;
boolean booleanToFlip;
boolean setOnOrOff;
// Seconds is seconds before flip.
// booleanToFlip is where you define where you use it which boolean to use.
// setOnOrOff is true or false, whether it flips it to on or off after a
// certain time.
public BooleanFlipCounter(int secondss, boolean booleanToFlips,
boolean setOnOrOffs) {
seconds = secondss;
booleanToFlip = booleanToFlips;
setOnOrOff = setOnOrOffs;
}
@Override
public void run() {
// TODO Auto-generated method stub
while (seconds <= 0) {
System.out.println("1: " + booleanToFlip + " : " + setOnOrOff);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
seconds--;
System.out.println("Minused");
}
if (setOnOrOff == true) {
Main.test = true;
System.out.println("2: " + booleanToFlip + " : " + setOnOrOff);
} else if (setOnOrOff == false) {
Main.test = false;
System.out.println("3: " + booleanToFlip + " : " + setOnOrOff);
}
}
}
Я хочу иметь доступ к "тесту" при создании нового BooleanFlipCounter. Как мне получить доступ к нему как к логическому объекту, а не как к фактическому логическому объекту? Если это имеет смысл.
1 ответ
boolean
переменная не является объектом, и вы не можете получить к нему доступ "как" к объекту. Если вы хотите ссылку на boolean
переменная, вам нужно использовать ссылку на объект, который ее содержит.
Вы можете определить интерфейс:
public interface Testable {
boolean isTest();
void setTest(boolean test);
}
Тогда вы можете сделать свой Main
реализовать класс Testable
с точки зрения его внутреннего test
флаг и сделать BooleanFlipCounter
взять ссылку на Testable
объект, которым он должен манипулировать.
(Обратите внимание, что для этого необходимо создать экземпляр вашего Main
класс, или, по крайней мере, что-то, что реализует Testable
интерфейс. Если Main.test
Флаг в настоящее время является статической переменной, рассмотрите возможность сделать его нестатичным. Вы можете иметь свой статический main
метод просто создать new Main()
и вызвать метод для выполнения реальной работы.)