JavaFX - ReadOnlyProperty不是只读的

时间:2018-05-12 10:37:14

标签: java javafx properties

我正在查看Property API并注意到ReadOnly属性实际上是Properties的子类。我认为一开始就没问题,因为一旦对象是ReadOnlyProperty,它就无法重新获得Property内部的方法。然而,事实并非如此,您可以轻松地进行类型转换以完全绕过只读部分。

public static void change(ReadOnlyIntegerProperty y)
{
    if (y instanceof IntegerProperty)
    {
        IntegerProperty z = (IntegerProperty)y;
        z.set(10);
    }
}

这是设计意图吗?我认为ReadOnlyProperties更像是程序员的指南。但实际上并不意味着在JavaFX api中,某些属性是以ReadOnly的形式提供的,然后可以更改?例如:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html

public final ReadOnlyObjectProperty<Scene> sceneProperty

我可以简单地将其转换为ObjectProperty<Scene>,现在我可能会在库中导致未定义的行为。

我试图用另一种不支持它的语言来实现Property。什么是防止这种情况发生的好方法?

0 个答案:

没有答案