JavaFX:克隆 XYChart.Series 不笨
JavaFX: clone XYChart.Series doesn't dork
大家好,我遇到了这个问题:
XYChart.Series x = (XYChart.Series)((XYChart.Series)item).clone();
错误:clone()
在 java.lang.Object
中具有受保护的访问权限
我该如何解决?
重要的是 x
是值 的 副本并且 不是 指向克隆项目的指针。
使用clone
要求类型实现此方法。一个主要部分,如果不是全部 JavaFX 类 不这样做,因为大多数包含可能附加不可克隆侦听器的属性。
这意味着您需要自己实施复制 XYChart.Series
。
既然你想要深拷贝这个系列,你可以使用下面的代码。根据您的用例,可能需要也可能不需要复制所有 XYChart.Data
对象:
public static <S, T> XYChart.Series<S, T> copySeries(XYChart.Series<S, T> series) {
XYChart.Series<S, T> copy = new XYChart.Series<>(series.getName(),
series.getData().stream()
.map(data -> new XYChart.Data<S, T>(data.getXValue(), data.getYValue()))
.collect(Collectors.toCollection(FXCollections::observableArrayList)));
return copy;
}
如果不需要复制 Data
个对象,代码可以简化为
public static <S, T> XYChart.Series<S, T> copySeries(XYChart.Series<S, T> series) {
XYChart.Series<S, T> copy = new XYChart.Series<>(series.getName(),
FXCollections.observableArrayList(series.getData()));
return copy;
}
大家好,我遇到了这个问题:
XYChart.Series x = (XYChart.Series)((XYChart.Series)item).clone();
错误:clone()
在 java.lang.Object
我该如何解决?
重要的是 x
是值 的 副本并且 不是 指向克隆项目的指针。
使用clone
要求类型实现此方法。一个主要部分,如果不是全部 JavaFX 类 不这样做,因为大多数包含可能附加不可克隆侦听器的属性。
这意味着您需要自己实施复制 XYChart.Series
。
既然你想要深拷贝这个系列,你可以使用下面的代码。根据您的用例,可能需要也可能不需要复制所有 XYChart.Data
对象:
public static <S, T> XYChart.Series<S, T> copySeries(XYChart.Series<S, T> series) {
XYChart.Series<S, T> copy = new XYChart.Series<>(series.getName(),
series.getData().stream()
.map(data -> new XYChart.Data<S, T>(data.getXValue(), data.getYValue()))
.collect(Collectors.toCollection(FXCollections::observableArrayList)));
return copy;
}
如果不需要复制 Data
个对象,代码可以简化为
public static <S, T> XYChart.Series<S, T> copySeries(XYChart.Series<S, T> series) {
XYChart.Series<S, T> copy = new XYChart.Series<>(series.getName(),
FXCollections.observableArrayList(series.getData()));
return copy;
}