首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过CheckStyle

通过CheckStyle
EN

Stack Overflow用户
提问于 2017-08-01 20:28:39
回答 3查看 424关注 0票数 4

所以我刚开始使用校验风格,对于我的简单的HelloWorld java程序,我收到了很多我不明白的错误。

我的代码:

代码语言:javascript
复制
package <package_name>;

/**
* A simple class to compile.
*/
public class HelloWorld {

 /**
  * @param args standard main parameters
  */

    public static void main(String[] args) {
        System.out.println("hello world");
    }
}

我收到了错误:

代码语言:javascript
复制
Line 6: Utility classes should not have a public or default constructor
Line 10: Parameter args should be final

为什么会发生这种事?是否有必要为我的main类创建一个私有构造函数并使默认参数成为最终参数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-01 20:33:30

对于像您的主类这样的实用程序类,最好创建一个私有构造函数,这样就不会让java编译器自己编写默认的no构造函数Main()

Java总是在将参数发送到方法之前复制它们。这里的最后一个关键字只意味着方法中的变量不能重新分配。(请注意,如果有最后一个对象,如String[],则仍然可以更改对象的属性)。

票数 4
EN

Stack Overflow用户

发布于 2017-08-01 20:37:17

第一个问题被这里回答,并被记录为这里。简而言之,您没有向HelloWorld类提供任何实例成员,那么为什么允许他们创建实例呢?这就是为什么建议创建private构造函数的原因。

第二期--声明为这里。简短的答案--在执行该方法的算法时更改参数的值可能会引起混淆,应该避免。这就是为什么建议声明它们为final的原因

票数 2
EN

Stack Overflow用户

发布于 2017-08-01 20:43:46

您可能需要至少创建一个私有构造函数,添加以下内容:

代码语言:javascript
复制
/**
 * Private default constructor
 */
private HelloWorld () {
}

那会让它消失的。之所以如此,是因为Java编译器“认为”您想要创建一个实用程序类,因为它只看到公共静态方法。在这种情况下,最好的做法是拥有一个私有的默认构造函数。

以"Hello“为例,这样做是可以的。但是在RL代码中,您希望从您的HelloWorld类创建一个实例,然后向它添加一个"business“方法(一个包含您的逻辑的方法)。

编辑:第10行中的警告是一个很好的警告,因为通常对参数使用final意味着不能更改参数的值:

代码语言:javascript
复制
public class Foo {
    public Foo () {
    }

    public void doBar (final Bar bar) {
        // Won't work:
        bar = null;

        // Will work!
        bar.callMe();
    }
}

public class Bar {
    public Bar {
    }

    public void callMe () {
        // Do something
    }
}

现在,只需删除该final,它就会编译,但会向您抛出更改参数的警告。这会产生意想不到的副作用,即(稍后在较大的项目中)方法更改了“某个地方”的一些参数。

试想一下:+200 k行代码(没有注释!)参数没有final ..。一个完美的混乱..。

被接受的答案的海报上写着,只是更多的细节和一个很好的理由。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45447138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档