【问题标题】:Cannot access non-static method (constructor) from main (tried instantiating)无法从 main 访问非静态方法(构造函数)(尝试实例化)
【发布时间】: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


【解决方案1】:

我明白现在发生了什么。 我在 Main 中创建了“A”类,这是一个错误 - 它应该在外面。换句话说,我错过了一个括号。

我正在学习有关嵌套类的教程(“B”类在“A”内,但为了本文的目的我将其删除)。

这是一个愚蠢的错误,感谢您的耐心。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    相关资源
    最近更新 更多