为什么以下代码抛出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
}
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
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)
Run Code Online (Sandbox Code Playgroud)
Pace的答案仍然有效,但是如果您想要一个Property而不仅是ObservableMap,那么这不是正确的代码。
static MapProperty<String, String> model = new SimpleMapProperty<String, String>(FXCollections.observableHashMap());
Run Code Online (Sandbox Code Playgroud)
会更适合。您仍然必须使用新的ObservableMap实例初始化SimpleMapProperty。没有SimpleMapProperty初始Map的构造函数不会为您创建一个。这是因为您可以选择自己的ObservableMap实现来支持Property。
如果您确实想创建可观察地图的实例,您应该使用
ObservableMap<String,String> model = FXCollections.observableHashMap();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2973 次 |
| 最近记录: |