Java - 使用静态方法中的实例类?

标签 java static instance inner-classes

多年来我一直在使用 .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()
        {

        }
    }
}

最佳答案

ProcessorLab 的内部类吗? (是的,现在您发布了您的代码,我的怀疑得到证实)。

在 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/

相关文章:

java - 无法从 DenseInstance 转换为 Instance

java - 无法使用 PreparedStatement 的 getGeneratedKeys() 在 Java 中找到生成的 key

python - Pydev 显示 @staticmethod 重新实现的错误

html - Django 发送带图片的 HTML 邮件

c - libcurl 应用程序 linux C 的静态编译(缺少库)

Java:在作业中使用字符串作为实例变量。

Python 字节数组 : Function changes other Instance?

java - Android SearchView 使用 FloatingActionButton

java - 如何使用 Maven 创建没有依赖项的可执行 jar?

java - 如何从文件中读取无符号值