我在一个类中有两个嵌套类,外部类扩展了另一个类。结构是这样的。
public class EXTENSION_CLASS
{
public int Get_Value()
{
return(100);
}
}
public class OUTER extends EXTENSION_CLASS
{
public static class NESTED1
{
public void Method1()
{
int value=0;
value=Get_Value();
System.out.println("Method1: "+value);
}
}
public static class NESTED2
{
NESTED1 Nested1_Instance=new NESTED1();
public void Method2()
{
Nested1_Instance.Method1();
}
}
public void run()
{
NESTED2 Nested2_Instance=new NESTED2();
Nested2_Instance.Method2();
}
public static void main (String[] args)
{
OUTER New_Class=new OUTER();
New_Class.run();
}
}
我期待输出:"方法1:100"。但是,我得到输出:" OUTER.java:16:错误:非静态方法Get_Value()不能从静态上下文值= Get_Value();"中引用。我怎样才能使这个工作?
干杯!
拉杰什。
答案 0 :(得分:1)
一种方法是在NESTED2中拥有NESTED1的实例。例如:
private static class NESTED2
{
private NESTED1 nested1;
public NESTED2 (NESTED1 nested1) {
this.nested1 = nested1;
}
public void Method2()
{
nested1.Method1();
}
}
答案 1 :(得分:1)
private static class NESTED2
{
public void Method2(NESTED1 nested1Instance)
{
nested1Instance.Method1();
}
}
那应该用你的班级结构来做。相反,通过这样的修改......
private static class NESTED1
{
public *statc* void Method1()
{
...
}
}
private static class NESTED2
{
public *static* void Method2()
{
NESTED1.Method1();
}
}
......你可以逃脱没有物体的创造。
如果将方法设为静态,则不需要实例化(创建)类对象来首先调用它们。