多年来我一直在使用 .NET 进行编程,现在我正在通过一些简单的入门程序投入到 Java 中。
虽然我有点麻烦......
当我使用 public void main
创建启动类时,编译器不让我实例化我编写的任何类?
我收到的错误是“无法从静态上下文中引用非静态变量 _processor”,其中 _processor 是我尝试从我编写的 Processor 类实例化的对象。
当我将 Processor 更改为静态类时,程序将编译并运行得很好,但我不想将所有类都设为静态。
有什么办法解决这个问题吗?
提前致谢!
这是我写的所有内容。它不会在当前状态下编译:
class Lab
{
public static void main(String[] args)
{
Processor proc = new Processor();
proc.Go();
}
private class Processor
{
private Random _rand = new Random();
public void Processor() {}
public void Go()
{
}
}
}
最佳答案
Processor
是 Lab
的内部类吗? (是的,现在您发布了您的代码,我的怀疑得到证实)。
在 Java 中,nonstatic inner classes contain an implicit reference to the containing object of the outer class ,因此它们无法从静态上下文(从您的 main
方法)实例化。
所以
- 创建
Lab
的实例(例如myLab
),然后调用myLab.new Processor()
,或者 - 将
Processor
声明为静态(就像您所做的那样),或者 - 将
Processor
变成顶级类。
关于Java - 使用静态方法中的实例类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195648/