gpt4 book ai didi

java - 无法在类外访问正确的类对象

转载 作者:行者123 更新时间:2023-12-02 01:47:56 26 4
gpt4 key购买 nike

我有一个类,其中包含我已声明为静态 volatile 的类,因为我想让不同的类访问它的同一个实例。当该类被实例化时,我以为它会创建我的 HashMap 的一个实例,但显然它已经创建了 2 个实例。

第 1 类:

public class FlightMap {

private Flight flight;
private static volatile HashMap<String, Flight> flight_hm;

public FlightMap() {
flight = new Flight();
HashMap<String, Flight> flight_hm = new HashMap<>();
}

public int GetSize() {
int size = flight_hm.size();
return size;
}

类2//调用类

public class GetFlightThread extends Thread {

@Override
public void run() {

String ref;
FlightMap fm = new FlightMap();
int size=0;

size = fm.GetSize();
}

当我查看 1 类内部的调试器时,有 2 个“flight_hm”实例,一个大小为零且是静态的,另一个是 null 且非静态的。类 2 中的“size”变量为 null,因此显然类 2 正在访问非静态实例。如何仅创建 1 个“fm”实例?

最佳答案

HashMap<String, Flight> flight_hm = new HashMap<>();

↑ 这是声明一个局部变量并赋值给该局部变量。这个局部变量屏蔽了类级别的static变量。

当你声明一个静态变量时,你需要在声明它的同一行上初始化它,如下所示:

private static volatile HashMap<String, Flight> flight_hm = new HashMap<>();

关于java - 无法在类外访问正确的类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53468896/

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