Мне нравится использовать классы Property, но я не фанат того, как долго нужно предложение, чтобы делать простые вещи.
Я хотел расширить класс SimpleBooleanProperty, чтобы вместо необходимости что-то делать как это:
myProperty.setValue(!myProperty.getValue());
Я мог бы просто сделать это:
myProperty.flip();
ТАК, я пытался расширить SimpleBooleanClass, но он не работает.
Вот моя попытка сделать это с соответствующими результатами, опубликованными ниже:
import javafx.beans.InvalidationListener;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
public class CBP extends SimpleBooleanProperty {
@Override public void bind(ObservableValue<? extends Boolean> observable) {}
@Override public void unbind() {}
@Override public boolean isBound() {return false;}
@Override public Object getBean() {return null;}
@Override public String getName() {return null;}
@Override public boolean get() {return false;}
@Override public void set(boolean value) {}
@Override public void addListener(ChangeListener<? super Boolean> listener) {}
@Override public void removeListener(ChangeListener<? super Boolean> listener) {}
@Override public void addListener(InvalidationListener listener) {}
@Override public void removeListener(InvalidationListener listener) {}
public void flip(){
super.setValue(!super.getValue());
}
}
Эта попытка использовать это произвела вывод как показано:
CBP cbp = new CBP();
cbp.setValue(true);
if (cbp.getValue().equals(true)) System.out.println("TRUE"); else System.out.println("FALSE");
cbp.flip();
if (cbp.getValue().equals(true)) System.out.println("TRUE"); else System.out.println("FALSE");
Это вывод:
FALSE
FALSE
Что я делаю не так?