为什么下面的代码会抛出UnsupportedOperationException
?
import javafx.beans.property.MapProperty;
import javafx.beans.property.SimpleMapProperty;
public class TestMapProperty {
static MapProperty<String, String> model = new SimpleMapProperty<String, String>();
public static void main(String[] args) {
model.put("blue", "green"); // exception thrown here
}
}
堆栈跟踪:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractMap.put(AbstractMap.java:203)
at javafx.beans.binding.MapExpression.put(MapExpression.java:277)
at TestMapProperty.main(TestMapProperty.java:10)
最佳答案
Pace 的答案仍然有效,但如果您想要一个属性而不仅仅是一个 ObservableMap,那么这不是正确的代码。
static MapProperty<String, String> model = new SimpleMapProperty<String, String>(FXCollections.observableHashMap());
会更适合。您仍然必须使用新的 ObservableMap 实例初始化 SimpleMapProperty。没有 SimpleMapProperty 初始 Map 的构造函数不会为您创建一个。这是因为您可以选择自己的 ObservableMap 实现来支持属性。
关于java - 使用 javafx SimpleMapProperty 时出现 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995102/