Если возможно, я хочу сделать измененный автоматически удален из свойства после того, как его собирает мусор. Я попытался использовать SleedChangelistener , но это не сработало. Это мой код: < /p>
public class NewMain extends Application {
private StringProperty property = new SimpleStringProperty("Initial Value");
private WeakChangeListener weakChangeListener = new WeakChangeListener((obs, oldVal, newVal) ->
System.out.println("Value changed: " + oldVal + " -> " + newVal));
@Override
public void start(Stage primaryStage) {
Button changeButton = new Button("Change Value");
Button clearButton = new Button("Clear");
property.addListener(weakChangeListener);
changeButton.setOnAction(e -> property.set("New Value " + Math.random()));
clearButton.setOnAction(e -> {
weakChangeListener = null;
System.gc();
System.runFinalization();
});
VBox root = new VBox(10, changeButton, clearButton);
Scene scene = new Scene(root, 300, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
< /code>
Я ожидаю, что после нажатия кнопки прозрачной кнопки прослушиватель изменения будет удален из свойства и больше не будет вызван. Но это не удалено.
Может ли кто -нибудь сказать, как это сделать, если это возможно?
Подробнее здесь: https://stackoverflow.com/questions/795 ... -it-is-gar