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
  1. 您不需要 storeEndpointArnretrieveEndpointArn 方法,因为 storeEndpointArngetArnStorage 完全可以通过 storeEndpointArnretrieveEndpointArn 分别。您可以尝试直接在实例上调用 getterssetters,而不是在 storeEndpointArn 中创建对象并设置值(无论如何它都不会执行您希望它执行的操作)。

  2. staticnon-static 方法而言,您不能使用 class 名称调用 instance 方法,只能static 方法可以这样调用。查看 this 文章,了解 staticnon-static 方法。