gpt4 book ai didi

java - 从静态内部类访问非静态成员方法的解决方法

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:17 25 4
gpt4 key购买 nike

我有一个导致内存泄漏的非静态内部类,因为它持有对封闭类的隐式引用:

private class CalendarScheduleUpdatedEventListener extends ScheduleUpdatedEventListener.Stub {

@Override
public void onScheduleUpdatedEvent() throws RemoteException {
updateCalendar();
}
}

为了防止泄露,我需要让它静态化:

private static class CalendarScheduleUpdatedEventListener extends ScheduleUpdatedEventListener.Stub {

@Override
public void onScheduleUpdatedEvent() throws RemoteException {
updateCalendar();-> Compiler error - trying to access a non-static...
}
}

不可能使 updateCalendar() 成为静态的,因为在其中我访问了其他非静态变量并且它变得一团糟。我该怎么办?

最佳答案

您需要传入对外部类实例的引用。并且您需要公开您的静态类。

public static class CalendarScheduleUpdatedEventListener extends ScheduleUpdatedEventListener.Stub {

@Override
public void onScheduleUpdatedEvent(final TheOuterClass instance) throws RemoteException {
instance.updateCalendar();
}
}

关于java - 从静态内部类访问非静态成员方法的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34678226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com