[英]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" ?
}
}
我尝试了两种方式,反之亦然,但是相同的错误。 有什么建议么 ?
name
是OuterClass
的成员。 您正在尝试使用innerclass
实例访问它。 这就是为什么您会收到此错误。
还有+
这是什么System.out.println(+p.name);
?
编辑:
从内部类中,您可以访问外部类的static
成员,如下所示:
name = "";
要么
Outerclass.name = "";
将+p.name
更改为name或OuterClass.name
。 在System.out.println
+
会给您另一个编译时错误。
static
成员在对象级别不可用,而在类级别可用。 static
在编译时初始化,在运行时创建对象
i.name
应该是Outerclass.name
因为name
是Outerclass
的成员而不是innerclass
在您的代码中, i
是innerclass
的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.