Pat*_*ryk 15 java compiler-errors subclass non-static
我有一个非常简单的类,我想用它作为另一个的子类.但当我把它的代码放在父类的时候,我得到:
非静态变量,不能从静态上下文引用
另一方面,当我把子GenTest
类的类代码放在"父级"类代码之外时 - JavaApp1
我没有得到这个错误.
public class JavaApp1 {
class GenTest {
@Deprecated
void oldFunction() {
System.out.println("don't use that");
}
void newFunction() {
System.out.println("That's ok.");
}
}
public static void main(String[] args) {
GenTest x = new GenTest();
x.oldFunction();
x.newFunction();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Jon*_*eet 19
您的嵌套类(这不是一个子类,顺便)未被标记为静态的,因此它是一个内这要求编码类(JavaApp1)的一个实例,以构建它的类.
选项:
JavaApp1
)创建一个JavaApp1
"封闭实例"的实例:
GenTest x = new JavaApp1().new GenTest();
Run Code Online (Sandbox Code Playgroud)个人而言,我会用第二种方法去 - 嵌套类在Java中有他们周围的几个古怪,所以我会使用的顶级类,除非你有一个很好的理由,使其嵌套.(最终选择特别混乱,IMO.)
有关内部类的更多信息,请参见JLS的8.1.3节.
归档时间: |
|
查看次数: |
6361 次 |
最近记录: |