Использование 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;
}