Я просматривал Property API и заметил, что свойства ReadOnly на самом деле являются подклассом Properties.Сначала я подумал, что это нормально, поскольку, если объект является ReadOnlyProperty
, он не может восстановить методы внутри Property
.Однако это не так, вы можете легко настроить тип, чтобы полностью обойти часть только для чтения.
public static void change(ReadOnlyIntegerProperty y)
{
if (y instanceof IntegerProperty)
{
IntegerProperty z = (IntegerProperty)y;
z.set(10);
}
}
Это задумано специально?Я понимаю, что ReadOnlyProperties - это скорее руководство для программиста.Но на самом деле это не значит, что в API JavaFX некоторые свойства предоставляются как ReadOnly, и затем могут быть изменены?Например: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html
public final ReadOnlyObjectProperty<Scene> sceneProperty
Я мог бы просто привести это значение к ObjectProperty<Scene>
, и теперь я могу потенциально вызвать неопределенное поведение в библиотеке.
Я пытаюсь реализовать Property
на другом языке, который их не поддерживает.Что может быть хорошим способом предотвратить это?