Khi sử dụng lớp bên trong ẩn danh làm PropertyChangeListener tại điểm nào trong vòng đời của đối tượng là lớp rác thu thập được? Sau khi lớp chứa (SettingsNode) được khai hoang? Tôi có nên loại bỏ một cách rõ ràng PropertyChangeListener trong finalizer của lớp có chứa (SettingsNode)?Java - Vòng đời lớp bên trong vô danh
public class SettingsNode extends AbstractNode
{
public SettingsNode(Project project, ProjectSettings projectSettings)
throws IntrospectionException
{
// use an anonymous inner class to listen for changes
projectSettings.addPropertyChangeListener(ProjectSettings.PROP_NAME,
new PropertyChangeListener()
{
@Override
public void propertyChange(PropertyChangeEvent evt)
{
// handle event
}
});
}
}
Dựa trên các câu trả lời được cung cấp, một ẩn danh dường như không phải là tùy chọn tốt nhất cho trường hợp sử dụng này. Tôi đang nghĩ một lớp bên trong thể hiện có thể là một lựa chọn tốt hơn, vì tôi có thể giữ một tham chiếu và gọi phương thức removePropertyListener tại một số điểm tương lai. – javacavaj