可刷新javafx只读属性

可刷新javafx只读属性,java,javafx-2,Java,Javafx 2,假设我有一个布尔属性,它应该表示特定路径中的特定文件是否存在 下面是一些代码: class SomeClass { protected static final File FILE_TO_TEST = new File("test.canc.me"); //My javafx property public ReadOnlyBooleanPropertyBase fileExistingProperty = new ReadOnlyBooleanPropertyBase() { @

假设我有一个布尔属性,它应该表示特定路径中的特定文件是否存在

下面是一些代码:

class SomeClass {

protected static final File FILE_TO_TEST = new File("test.canc.me");

//My javafx property
public ReadOnlyBooleanPropertyBase fileExistingProperty = new ReadOnlyBooleanPropertyBase() {

    @Override public boolean get() {
        return FILE_TO_TEST.exists();
    }

    @Override public Object getBean() { return null; }

    @Override public String getName() { return ""; }

};

//old style property property 
public boolean isFileExisting() {
    return fileExistingProperty.get();
}
嗯。事实上,该属性是只读的,因为它无法设置,其值取决于应用程序主目录中存在的文件所表示的“外部”条件
但是,我需要刷新属性,即再次查看文件是否仍然存在,并相应地引发更改和失效事件
我可以很容易地向property类添加一个refresh方法,但是为了调用它,我必须创建一个内部类,而不仅仅是一个匿名类。
对于每种不同类型的只读但可刷新的属性,即布尔、字符串、整数等,我都需要一个匿名类。
问题是:有没有更方便的方法来实现这一点

我必须创建一个内部类,而不仅仅是一个无名氏类

我将采用这种方法,而不是尝试创建一堆匿名内部类

对于每种不同类型的只读但可刷新的属性,即布尔、字符串、整数等,我需要一个匿名类

使用泛型-这就是它们的设计目的!创建一个
ReadOnlyRefreshableProperty
,然后相关方法的返回类型和参数都使用
T
作为其类型,这样就不需要为每个类型创建单独的类