非静态变量不能被引用
Non static variable cannot be referenced
我试图通过将代码分成多个函数来使我的 main() 方法中的代码尽可能简洁,因此例如我使用以下函数创建了 class RentalAgency 的实例:
/** Creates an Agency with some cars and motorbikes
*/
public RentalAgency createAgency(){
List<Vehicle> theVehicles = new ArrayList<Vehicle>();
Map<Client,Vehicle> rentedVehicles = new HashMap <Client,Vehicle>();
RentalAgency agency = new RentalAgency(theVehicles, rentedVehicles);
Vehicle v1 = new Vehicle("Renault","clio",1998,50);
agency.addVehicle(v1);
Vehicle v2 = new Vehicle("Renault","twingo",2000,40);
agency.addVehicle(v2);
Car c1 = new Car("Renault","scenic",2005, 80, 7);
agency.addVehicle(c1);
Car c2 = new Car("Citroen","c3",2006, 70, 5);
agency.addVehicle(c2);
MotorBike m1 = new MotorBike("Honda","CB",2015, 50, 500);
agency.addVehicle(m1);
MotorBike m2 = new MotorBike("Yamaha","MT",2017, 80, 750);
agency.addVehicle(m2);
return agency;
}
在 main() 中我尝试 运行 这个 :
/**The main function to run the Agency and some renting
*/
public static void main(String[] args) throws UnknownVehicleException {
RentalAgency agency = this.createAgency();
}
但我收到这样的错误:
error: non-static variable this cannot be referenced from a static context
RentalAgency agency = this.createAgency();
我真的不知道如何纠正,我查了一下,当您尝试对未启动的对象使用方法时似乎会发生这种情况?
将方法签名更改为以下内容:
public static RentalAgency createAgency() {...}
您还需要从 main()
方法中删除 this
引用,并按以下方式简单地调用该方法:
RentalAgency agency = createAgency();
java中的this
指的是你手头的物品。现在,在您的情况下,没有对象只是在 main 方法中引用了 RentalAgency。
要使用this
,您需要创建一个对象。但是,我猜你正在使用 createAgency
方法而不是通常的构造函数方法。因此,将 createAgency
标记为 static
并在不使用 main
方法中的 this
的情况下调用它。
public static RentalAgency createAgency(){
//Some code goes here
}
public static void main(String[] args) throws UnknownVehicleException
{
RentalAgency agency = createAgency();
}
main() 是一个静态函数,因此没有实例 this
从内部引用。尝试使 createAgency()
静态化:
public static RentalAgency createAgency() {
...
}
我试图通过将代码分成多个函数来使我的 main() 方法中的代码尽可能简洁,因此例如我使用以下函数创建了 class RentalAgency 的实例:
/** Creates an Agency with some cars and motorbikes
*/
public RentalAgency createAgency(){
List<Vehicle> theVehicles = new ArrayList<Vehicle>();
Map<Client,Vehicle> rentedVehicles = new HashMap <Client,Vehicle>();
RentalAgency agency = new RentalAgency(theVehicles, rentedVehicles);
Vehicle v1 = new Vehicle("Renault","clio",1998,50);
agency.addVehicle(v1);
Vehicle v2 = new Vehicle("Renault","twingo",2000,40);
agency.addVehicle(v2);
Car c1 = new Car("Renault","scenic",2005, 80, 7);
agency.addVehicle(c1);
Car c2 = new Car("Citroen","c3",2006, 70, 5);
agency.addVehicle(c2);
MotorBike m1 = new MotorBike("Honda","CB",2015, 50, 500);
agency.addVehicle(m1);
MotorBike m2 = new MotorBike("Yamaha","MT",2017, 80, 750);
agency.addVehicle(m2);
return agency;
}
在 main() 中我尝试 运行 这个 :
/**The main function to run the Agency and some renting
*/
public static void main(String[] args) throws UnknownVehicleException {
RentalAgency agency = this.createAgency();
}
但我收到这样的错误:
error: non-static variable this cannot be referenced from a static context RentalAgency agency = this.createAgency();
我真的不知道如何纠正,我查了一下,当您尝试对未启动的对象使用方法时似乎会发生这种情况?
将方法签名更改为以下内容:
public static RentalAgency createAgency() {...}
您还需要从 main()
方法中删除 this
引用,并按以下方式简单地调用该方法:
RentalAgency agency = createAgency();
this
指的是你手头的物品。现在,在您的情况下,没有对象只是在 main 方法中引用了 RentalAgency。
要使用this
,您需要创建一个对象。但是,我猜你正在使用 createAgency
方法而不是通常的构造函数方法。因此,将 createAgency
标记为 static
并在不使用 main
方法中的 this
的情况下调用它。
public static RentalAgency createAgency(){
//Some code goes here
}
public static void main(String[] args) throws UnknownVehicleException
{
RentalAgency agency = createAgency();
}
main() 是一个静态函数,因此没有实例 this
从内部引用。尝试使 createAgency()
静态化:
public static RentalAgency createAgency() {
...
}