2015-09-18 70 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