当前位置: 首页 > 面试题库 >

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

邹弘
2023-03-14
问题内容

我正在学习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:

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


问题答案:

这意味着有人可以写:

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!");
    }
}


 类似资料:
  • 我有一个java应用程序,它在JTabbedPane上加载并显示一个applet。所以基本上GUI是: 小程序-- 我已经在JFrame类中放入了这一标准行: 下面是我在 JFrame 类中的方法,它应该在窗口关闭时调用: 然后,在我的Tabbed Pane类中,我有一个管理Applets的arrayList: 我循环遍历JPanels的ArrayList,如下所示: JPanel类中的stopG

  • 我不明白为什么我收到以下代码的警告: 未选中对<code>isAssignableFrom(类)的调用 当我使用< code>isInstance方法时(根据我的理解,它提供相同的结果),我没有得到警告:

  • Spring HATEOAS定义并注册包含序列化器的Jackson模块的,以将其和类型转换为HAL JSON表示。这些模块使用Jackson混合将序列化器绑定到如下类型: 这个mixin导致扩展

  • 问题内容: 我在GlassFish上运行我的应用程序,我使用Spring Security和Hibernate。当我运行该应用程序时,以下警告和错误将显示在GlassFish控制台上。如何避免它们? hibernate.cfg.xml HibernateUtil.java 问题答案: 这些是在服务器保持运行状态下重新部署应用程序时可能发生的错误消息。 如果是关闭场景或开发重新部署,则可以安全地忽略

  • 问题内容: 我在android虚拟机中使用以下代码 我收到HttpHostConnectException。不知道为什么?我已将网址中的地址从127.0.0.1更改为10.0.2.2,但仍然收到该异常。我的电脑中安装了wamp服务器,文件“ ReadingFromServer.php”位于“ www”文件夹中。 这是完整的堆栈跟踪 谢谢。 问题答案: 您是否在AndroidManifest.xml

  • 我已经连接了我的Windows10和linux机器。我想远程关闭我的Windows10电脑从我的Linux。然而,当我使用下面的Java程序时,它并没有关掉我的窗户。我试过用 相反,在程序中输出命令,但我得到了相同的结果。 输出