它说,静态非常适合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" ?
}
}
我尝试过两种方式,反之亦然但错误相同。有什么建议吗?
答案 0 :(得分:0)
name
是OuterClass
的成员。并且您正尝试使用innerclass
实例访问它。这就是你得到这个错误的原因。
此处+
System.out.println(+p.name);
是什么意思?
修改强>
从内部类中,您可以访问外部类static
成员,如下所示:
name = "";
或
Outerclass.name = "";
将+p.name
更改为名称或OuterClass.name
。 <{1}}内的+
会给你另一个编译时错误。
System.out.println
成员在对象级别不可用,它们在类级别可用。 static
在编译时初始化,其中在运行时创建对象
答案 1 :(得分:0)
i.name
应为Outerclass.name
,因为name
是Outerclass
的成员,而不是innerclass
在您的代码中,i
是innerclass
的实例。