【发布时间】:2017-07-21 09:51:48
【问题描述】:
我已经进行了彻底的搜索,并且我知道您必须先在静态方法 main() 中实例化一个对象,然后才能访问其非静态变量或方法。 但是,我相信我已经这样做了,所以我无法理解在此处获取“无法从静态上下文引用的非静态变量”的问题。
我刚开始尝试学习java,但是这个基本的构造函数不应该工作吗?
public class Main
{
public static void main(String[] args)
{
A outer = new A(); //<-- Error here
}
class A
{
A()
{
System.out.println("I'm from outer class A");
}
}
}
如果我将 A 类声明为静态,它将实例化它,但我不需要这样做,因为我已经创建了对象。如果我只有一个空的构造函数,它也不起作用。
如果有人可以提供帮助,我将不胜感激。我知道这是一个简单得可笑的错误,但我已经搜索了好几个小时却无法弄清楚。
【问题讨论】:
-
这里有一个内部类。内部类需要封闭类的实例(在您的情况下为 Main)。
-
为了更清楚地了解@Eran 的意思,请尝试更改您在
main方法中使用的类以表示Main而不是A,然后看看会发生什么。 -
使
A静态... (static class A {}) -
如果不是,请不要将其描述为“外部”。
-
@davidxx 当然可以。在深入挖掘之前尝试一下。
标签: java constructor static non-static