我正在尝试使用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);
}
}
要存储String,我使用以下(这可行)
public void storeEndpointArn(String endpointArn) {
ARNStorage endPoint = new ARNStorage();
endPoint.setArnStorage(endpointArn);
System.out.println("Storing endpoint: " + endpointArn);
}
但是,要检索String,我尝试以这种方式检索它
public String retrieveEndpointArn() {
String endPointArn = ARNStorage.getArnStorage();
System.out.println("Retrieved endpoint: " + endPointArn);
return endPointArn;
}
但是,这会返回一个非静态方法getArnStorage(),该方法无法从静态上下文中检索。我对静态语境的理解是,它不能被称为不存在的东西。
答案 0 :(得分:2)
您在存储方法和检索方法中创建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;
}
}
答案 1 :(得分:1)
您需要保持并使用相同的引用来存储和检索字符串。
ARNStorage endPoint = new ARNStorage();//endPoint is the reference to the object
endPoint.setArnStorage(endpointArn);
String endPointArn = endPoint.getArnStorage();//use endPoint to retrieve data
答案 2 :(得分:1)
您不需要storeEndpointArn
和retrieveEndpointArn
方法,因为storeEndpointArn
和getArnStorage
完全符合您要通过storeEndpointArn
和分别为retrieveEndpointArn
。您可以尝试直接在实例上调用getters
和setters
,而不是在storeEndpointArn
内创建对象并设置值(无论如何都不会执行您想要的操作)。
就static
和non-static
方法而言,您无法使用类名调用instance
方法,只能使用static
方法像这样叫。请查看static
与non-static
方法的this文章。