2015-09-18 71 views
0

我在我的项目中使用了以下代码。当我使用声纳对其进行评估时,它显示Unused private method侵犯了ObjectTypes内部类中定义的私人构造函数。如果我删除ObjectTypes构造函数,它会显示Hide Utility Class Constructor违规。请帮助我找到解决此问题的最佳方法。SonarQube违规:内部类私有构造函数未使用私有方法

public final class Constants 
{ 
    private Constants() 
    { 
    } 

    public static final String KEY_SEPARATOR = " ~ ";  
    public static final String COMMON_SEPARATOR = " : "; 

    public final class ObjectTypes 
    { 
    private ObjectTypes() 
    { 
    } 
    public static final String ACTION_CODES = "Action Codes"; 
    public static final String ALL_ACTION_CODES = "All Action Codes"; 
    //more lines 
    } 
} 
+0

我可以通过将私有构造函数更改为Inner类中的受保护构造函数来解决此问题。但是,我认为在最终的类中使用受保护的构造函数并不是一个好主意。 – Madhujith

回答

0

这就是问题所在:

private Constants() 
    { 
    } 

这:

private ObjectTypes() 
    { 
    } 

您不必申报EMPTY构造。

+0

但是,如果我删除空构造函数,我可以得到不同的声纳违规说'隐藏实用程序类构造函数为相应的类 – Madhujith

+0

检查了这一点:http://stackoverflow.com/questions/14398747/hide-utility-class-constructor -utility-classes-should-not-have-a-public-or-def –

+0

所有问题都是为了内部类。有没有什么办法可以在不使用私有构造函数的情况下克服内部类的Hide Utility Class Constructor'违例? – Madhujith