Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';无法访问类外的正确类对象_Java_Static - Fatal编程技术网

Java Can';无法访问类外的正确类对象

Java Can';无法访问类外的正确类对象,java,static,Java,Static,我有一个包含我声明为static volatile的类,因为我想让不同的类访问它的同一个实例。当这个类被实例化时,我以为它会创建我的hashmap的一个实例,但显然它已经创建了两个实例 第1类: public class FlightMap { private Flight flight; private static volatile HashMap<String, Flight> flight_hm; public FlightMap() { flight = new

我有一个包含我声明为static volatile的类,因为我想让不同的类访问它的同一个实例。当这个类被实例化时,我以为它会创建我的hashmap的一个实例,但显然它已经创建了两个实例

第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;
}

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

在类构造函数中声明的局部变量
flight\u hm
和您的静态变量
flight\u hm
是两个不同的变量。所以这里基本上发生的事情是,你们声明了静态变量,但并没有初始化它,你们还声明并初始化了构造函数中的局部变量。考虑使用<代码>这个关键字作为将来的一个好的实践,以避免这些错误。
public class FlightMap {

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

    public FlightMap() {
        flight = new Flight();
    }

    public int GetSize() {
        int size = this.flight_hm.size();
        return size;
    }
}
公共类FlightMap{
私人航班;
私有静态volatile HashMap flight_hm=new HashMap();
公共飞行地图(){
航班=新航班();
}
公共int GetSize(){
int size=this.flight_hm.size();
返回大小;
}
}

在类构造函数中声明的局部变量
flight\u hm
和静态变量
flight\u hm
是两个不同的变量。所以这里基本上发生的事情是,你们声明了静态变量,但并没有初始化它,你们还声明并初始化了构造函数中的局部变量。考虑使用<代码>这个关键字作为将来的一个好的实践,以避免这些错误。
public class FlightMap {

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

    public FlightMap() {
        flight = new Flight();
    }

    public int GetSize() {
        int size = this.flight_hm.size();
        return size;
    }
}
公共类FlightMap{
私人航班;
私有静态volatile HashMap flight_hm=new HashMap();
公共飞行地图(){
航班=新航班();
}
公共int GetSize(){
int size=this.flight_hm.size();
返回大小;
}
}
private static volatile HashMap<String, Flight> flight_hm = new HashMap<>();
public class FlightMap {

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

    public FlightMap() {
        flight = new Flight();
    }

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