Java get/set class 在静态上下文中无法访问
Java get/set class not accessible in static context
我正在尝试用 Java 创建 get/set class。但是,之后我无法从 class 取回数据。
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;
}
但是,此 returns 是一个非静态方法 getArnStorage(),无法从静态上下文中检索。我对静态上下文的理解是它不能在不存在的东西上调用。
您在存储方法和检索方法中创建了一个 ARNStorage
局部变量,您不使用 ARNStorage
实例而是 class 本身。
没有意义。
在这两种情况下你都应该使用一个实例,same.
要实现它,ARNStorage endPoint
应该是 class 的实例字段,而不是局部变量,如果你想从另一个方法重用它。
例如,您可以:
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;
}
}
您需要保留并使用相同的引用来存储和检索字符串。
ARNStorage endPoint = new ARNStorage();//endPoint is the reference to the object
endPoint.setArnStorage(endpointArn);
String endPointArn = endPoint.getArnStorage();//use endPoint to retrieve data
您不需要 storeEndpointArn
和 retrieveEndpointArn
方法,因为 storeEndpointArn
和 getArnStorage
完全可以通过 storeEndpointArn
和 retrieveEndpointArn
分别。您可以尝试直接在实例上调用 getters
和 setters
,而不是在 storeEndpointArn
中创建对象并设置值(无论如何它都不会执行您希望它执行的操作)。
就 static
和 non-static
方法而言,您不能使用 class 名称调用 instance
方法,只能static
方法可以这样调用。查看 this 文章,了解 static
与 non-static
方法。
我正在尝试用 Java 创建 get/set class。但是,之后我无法从 class 取回数据。
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;
}
但是,此 returns 是一个非静态方法 getArnStorage(),无法从静态上下文中检索。我对静态上下文的理解是它不能在不存在的东西上调用。
您在存储方法和检索方法中创建了一个 ARNStorage
局部变量,您不使用 ARNStorage
实例而是 class 本身。
没有意义。
在这两种情况下你都应该使用一个实例,same.
要实现它,ARNStorage endPoint
应该是 class 的实例字段,而不是局部变量,如果你想从另一个方法重用它。
例如,您可以:
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;
}
}
您需要保留并使用相同的引用来存储和检索字符串。
ARNStorage endPoint = new ARNStorage();//endPoint is the reference to the object
endPoint.setArnStorage(endpointArn);
String endPointArn = endPoint.getArnStorage();//use endPoint to retrieve data
您不需要
storeEndpointArn
和retrieveEndpointArn
方法,因为storeEndpointArn
和getArnStorage
完全可以通过storeEndpointArn
和retrieveEndpointArn
分别。您可以尝试直接在实例上调用getters
和setters
,而不是在storeEndpointArn
中创建对象并设置值(无论如何它都不会执行您希望它执行的操作)。就
static
和non-static
方法而言,您不能使用 class 名称调用instance
方法,只能static
方法可以这样调用。查看 this 文章,了解static
与non-static
方法。