java - 如何使用内部静态类对象访问外部类变量

标签 java

我正在研究java中的内部类。我已经看到,如果内部类是非静态的,那么它可以轻松访问外部类变量。但是如果内部类是静态的,那么我们如何使用静态的类对象来访问外部类的变量呢?

下面是我的代码,其中从内部类访问外部类变量

package org;

public class Outerclass {

     String name = "Europe";

    public String getname() {

        return name;
    }

    public void setname(String name) {

        this.name = name;
        System.out.println(this.name);
    }

    static class innerclass {

        void updatename() {
            Outerclass o = new Outerclass();
            o.setname("USA");
        }

    }

    public static void main(String[] args) {
        Outerclass b = new Outerclass();
        b.name; // why this error here ? "Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration"

        innerclass i = new innerclass();
        i.updatename();

    }

}

最佳答案

您无法访问静态内容内的非静态内容

当我们默认创建静态内部类时,它将创建为外部模板作为内部模板的关联。因此我们可以将两者一起加载,但静态内部类中只能包含静态内容。

现在类的对象之间没有任何联系。但模板之间是有联系的。

以下是您的代码,我做了一些修改,可能会对您有所帮助

public class Demo {

     String name = "Europe";

    public String getname() {

        return name;
    }

    public void setname(String name) {

        this.name = name;
        System.out.println(this.name);
    }

    static class innerclass {

        void updatename() {
            Demo o = new Demo();
            o.setname("USA");
        }

    }

    public static void main(String[] args) {
        Demo b = new Demo();
        String a = b.name; // why this error here ? "Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration"

        System.out.println(a);

        innerclass i = new innerclass();
        i.updatename();

    }

}

关于java - 如何使用内部静态类对象访问外部类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46991835/

相关文章:

java - 只读数据的 Spring Boot 存储库 : @Query annotation type not applicable to this kind of declaration

java - 编译错误: java. lang.UnsatisfiedLinkError : no J3D in java.library.path

Java - ClassNotFoundException 我包含了类,但为什么会出现异常?

java - 合并 JTable 的两个行过滤器

java - 与 Web 应用程序同时运行 jar 文件(独立的 java 控制台应用程序)

java - 带有用户名和密码输入的 JOptionPane

java - Wicket 和 'constructor calls overridable method' PMD 警告

java - 将类类型传递给方法,然后转换为该类型?

java - Lombok导致 "Actual and formal arguments lists differ in length error"

java - 为应用程序中的所有线程设置 ThreadContext