一尘不染

为什么我收到有关Java实用程序类的警告

java

我正在学习Java和OOPS,并在日食中编写基本的Hello World时,我看到一个黄色三角形,告诉我 “实用程序类不应具有公共或默认构造函数”
。我不明白为什么会这样,这是什么意思?我在做什么不对?

class HelloWorld {


public static void main(String[] args)
{
    // TODO Auto-generated method stub
            System.out.println("Hola Mundo!");

}


  }

EDIT1:编辑代码以包括建议的更改。

final class HelloWorld {


private HelloWorld()
{
    throw new AssertionError("Instantiating utility class...");

}
public static void main(String[] args)
{
    // TODO Auto-generated method stub
            System.out.println("Hola Mundo!");

}


}

仍然在类HelloWorld上收到警报。

编辑2:

创建了一个新类,现在可以使用了。谢谢乔恩,为什么旧​​班级还会发出警告?波希米亚语我仍然不知道您在您的帖子中提到的概念。一旦有了更好的主意,我会回到他们的身边。感谢您的解释。


阅读 241

收藏
2020-12-03

共1个答案

一尘不染

这意味着有人可以写:

HelloWorld helloWorld = new HelloWorld();

如果您 可能 不希望他们这样做-您不提供任何实例成员,那么为什么要允许他们创建实例?将代码重写为:

final class HelloWorld {

    private HelloWorld() {
        // Prevent instantiation
        // Optional: throw an exception e.g. AssertionError
        // if this ever *is* called
    }

    public static void main(String[] args) {
        System.out.println("Hola Mundo!");
    }
}
2020-12-03