可能重复:
为什么我得到“非静态变量不能从静态上下文引用”?
这是代码
public class Stack
{
private class Node{
...
}
...
public static void main(String[] args){
Node node = new Node(); // generates a compiling error
}
}
错误说:
不能从静态上下文引用非静态类节点
为什么我不应该在main()方法中引用Node类?
或者您可以在public class Stack
之外声明类Node
像这样,
public class Stack
{
public static void main(String[] args){
Node node = new Node();
}
}
class Node{
}
非静态嵌套类(内部类)可以访问封闭类的其他成员,即使它们被声明为私有。静态嵌套类无权访问封闭类的其他成员。作为OuterClass的成员,嵌套类可以声明为private、public、protected或package private。
要实例化内部类,您必须首先实例化外部类。然后,使用以下语法在外部对象中创建内部对象:OuterClass。InnerClass innerObject=outerObject.newInnerClass();
public static void main(String[] args){
Stack stack = new Stack();
Stack.Node node = new Stack().new Node();
}
或
public class Stack
{
private class Node{
...
}
...
...
...
public static void main(String[] args){
Node node = new Stack().new Node();
}
}
Java中的非静态嵌套类包含对父类实例的隐式引用。因此,要实例化一个节点,还需要有一个堆栈实例。在静态上下文(主方法)中,没有可参考的堆栈实例。因此,编译器指示它不能构造节点。
如果将节点设置为静态类(或常规外部类),则它不需要对堆栈的引用,可以直接在静态main方法中实例化。
有关详细信息,请参阅Java语言规范第8章,例如示例8.1.3-2。
我正在尝试编写一段代码,当我选中两个复选框中的一个复选框时,它将更改我选择按钮时显示的消息。 我收到的错误消息是: "FirstWindow.java:12:错误:不能从静态上下文消息中引用非静态变量消息="good job\n";" 对于第12、37、53、57行。我已尝试在main中声明字符串变量,但我只会收到错误: “FirstWindow。java:38:错误:从内部类引用的局部变量必须是
下面的代码出现在我试图创建的包的主类中。它引用了一个名为Journey的helper类中的对象和方法。在用星号标记的行中调用方法时,我得到一个“Non static method conly be referenced from static context”错误。这使我感到困惑,因为我的印象是,在第二行中创建的Journey对象“ThisJourney”构成了类的一个实例,因此意味着上下文不是静
我正在编写此代码,它显示了错误非静态方法googleapiability . isgoogleplayservicesavailable(上下文上下文)和googleapiability . get error dialog(Activity Activity,int errorCode,int requestCode)不能从静态上下文中引用。
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 为什么我会得到“无法从静态上下文引用的非静态变量”? 这是代码 错误说: 非静态类 Node 不能从静态上下文中引用 为什么不应该在main()方法中引用Node类? 问题答案: Java中的非静态嵌套类包含对父类 实例 的隐式引用。因此,要实例化a ,您还需要具有一个实例。在静态上下文(主要方法)中,没有要引用的实例。因此,编
我在阅读Kathy and Bert SCJP1.6时遇到了以下代码: 虽然是在跟踪变量的主题下,但我无法理解如何在main()方法(static)中引用非静态变量myBar?
刚刚安装POI 3.8 jar并更改代码...我得到这个错误: 无法从静态上下文引用非静态方法getFormat(java.lang.String)