gpt4 book ai didi

java - 从另一个静态变量构造函数调用静态变量

转载 作者:行者123 更新时间:2023-12-02 10:39:34 26 4
gpt4 key购买 nike

在我的 Android 应用程序中,我必须在第一个 Activity 启动之前初始化许多静态对象。据我所知,静态变量是在加载类时初始化的。因此,随着时间的推移,项目中静态对象的数量开始增长,现在我遇到了 NullPointerExceptions。就我而言,静态对象可以在其构造函数中调用其他静态对象。所以我的问题是:某些静态变量是否可以在它们依赖的变量之前初始化,从而导致 NullPointersExceptions?那可能吗?代码示例:

private static class HardwareManagersHolder implements HardwareManagers, IManagers {

private final AtomicBoolean senderAcquire = new AtomicBoolean(false);
private final AtomicInteger receiverAcquire = new AtomicInteger(0);
public IAudioManager audioManager;
public IVideoManager videoManager;
public IVibrationManager vibrationManager;
public IBatteryHelper batteryHelper;

@Override
public void configureManager() {
audioManager = AudioHelper.getInstance();
vibrationManager = VibrationManager.getInstance();
videoManager = VideoManager.getInstance();
batteryHelper = BatteryHelper.getInstance();
}

还有一个物体支架:

public class VideoManager implements IVideoManager {
private static class VideoManagerHolder {
public static final VideoManager VIDEO_MANAGER_INSTANCE = new VideoManager();
}


public static VideoManager getInstance() {
return VideoManagerHolder.VIDEO_MANAGER_INSTANCE;
}

}

最佳答案

我尝试用您提供的 fragment 重建您的异常。我使用了以下代码:

public interface IVideoManager {}


public class VideoManager implements IVideoManager {


private static class HardwareManagersHolder {

public IVideoManager videoManager;

public void configureManager() {
videoManager = VideoManager.getInstance();
}
}

private static class VideoManagerHolder {

public static final VideoManager VIDEO_MANAGER_INSTANCE = new VideoManager();
}

public static VideoManager getInstance() {
return VideoManagerHolder.VIDEO_MANAGER_INSTANCE;
}

public static void main(String[] arg) {
System.out.println("Start test");
HardwareManagersHolder h = new HardwareManagersHolder();
h.configureManager();
if (h.videoManager == null) {
System.out.println("VideoManager is null");
}
System.out.println("Test finished");
}

}

这段代码可以在我的机器上运行。如果此代码不适用于您的代码,则可能存在其他错误。

关于java - 从另一个静态变量构造函数调用静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53023085/

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