繁体   English   中英

通过静态对象访问静态成员

[英]Accessing static member by static object

它说,静态对Java中的静态非常满意。 我试图在那儿实现小目标,在这里我只想为特定实例使用内部静态类的实例来更改外部类的静态变量值。 我认为这是一个理想的情况。 如果没有,请与我分享。 而且,所有内部类都可以访问外部类的成员。

这是我的代码。

package org;

import org.Outerclass.innerclass;

public class Outerclass {

    static String name = "Europe";

    String getname() {

        return name;
    }

    public void setname(String name) {

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

    void setstaticname() {

        Outerclass.innerclass i = new Outerclass.innerclass();
        i.name = "London"; // Error "name cannot be resolved or is not a field"   ?
        System.out.println(i.name);

    }

    static class innerclass {

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

    }

    public static void main(String[] args) {

        innerclass p = new innerclass();
        System.out.println(p.name);   // Error "name cannot be resolved or is not a field" ?

    }

}

我尝试了两种方式,反之亦然,但是相同的错误。 有什么建议么 ?

nameOuterClass的成员。 您正在尝试使用innerclass实例访问它。 这就是为什么您会收到此错误。

还有+这是什么System.out.println(+p.name);

编辑:

从内部类中,您可以访问外部类的static成员,如下所示:

name = "";

要么

Outerclass.name = "";

+p.name更改为name或OuterClass.name System.out.println +会给您另一个编译时错误。

static成员在对象级别不可用,而在类级别可用。 static在编译时初始化,在运行时创建对象

i.name应该是Outerclass.name因为nameOuterclass的成员而不是innerclass

在您的代码中, iinnerclass的实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM