This question already has answers here:
Non-static variable cannot be referenced from a static context
(12个答案)
2年前关闭。
我试图用Java创建get / set类。但是,我在以后从班级找回数据时遇到了麻烦。
为了存储字符串,我使用以下代码(这有效)
但是,要检索字符串,我尝试通过这种方式检索它
但是,这将返回非静态方法getArnStorage(),该方法无法从静态上下文中检索。我对静态上下文的理解是,不能在不存在的对象上调用它。
(12个答案)
2年前关闭。
我试图用Java创建get / set类。但是,我在以后从班级找回数据时遇到了麻烦。
public class ARNStorage {
String arnStorage;
public String getArnStorage() {
System.out.println("Got endpoint: " + this.arnStorage);
return arnStorage;
}
public void setArnStorage(String arnStorage) {
this.arnStorage = arnStorage;
System.out.println("Saved endpoint: " + this.arnStorage);
}
}
为了存储字符串,我使用以下代码(这有效)
public void storeEndpointArn(String endpointArn) {
ARNStorage endPoint = new ARNStorage();
endPoint.setArnStorage(endpointArn);
System.out.println("Storing endpoint: " + endpointArn);
}
但是,要检索字符串,我尝试通过这种方式检索它
public String retrieveEndpointArn() {
String endPointArn = ARNStorage.getArnStorage();
System.out.println("Retrieved endpoint: " + endPointArn);
return endPointArn;
}
但是,这将返回非静态方法getArnStorage(),该方法无法从静态上下文中检索。我对静态上下文的理解是,不能在不存在的对象上调用它。
最佳答案
您在存储方法和检索方法中创建ARNStorage
局部变量,而不使用ARNStorage
实例,而是使用类本身。
这没有道理。
在这两种情况下,您都应该使用一个实例,并且实例相同。
要实现它,ARNStorage endPoint
应该是类的实例字段,而不是局部变量(如果要从其他方法重用它)。
例如,您可能有:
public class ClientClass{
private ARNStorage endPoint;
public void storeEndpointArn(String endpointArn) {
endPoint = new ARNStorage();
endPoint.setArnStorage(endpointArn);
System.out.println("Storing endpoint: " + endpointArn);
}
public String retrieveEndpointArn() {
String endPointArn = endPoint.getArnStorage();
System.out.println("Retrieved endpoint: " + endPointArn);
return endPointArn;
}
}
09-04 06:23