Java Can';无法访问类外的正确类对象
我有一个包含我声明为static volatile的类,因为我想让不同的类访问它的同一个实例。当这个类被实例化时,我以为它会创建我的hashmap的一个实例,但显然它已经创建了两个实例 第1类: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
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;
}
}