2

的IntelliJ生成以下的getter/setter代碼布爾字段:如何修改IDEA IntelliJ v10.x代碼生成器以獲取和設置?

private boolean isTest; 

    public boolean isTest() { 
     return isTest; 
    } 

    public void setTest(boolean test) { 
     isTest = test; 
    } 

這也得到相同的方法簽名:

private boolean test; 

    public boolean isTest() { 
     return test; 
    } 

    public void setTest(boolean test) { 
     this.test = test; 
    } 

太好了!到現在爲止還挺好。 IntelliJ遵循布爾的JavaBean命名約定。

但是要注意,當你使用對象布爾(而不是原始布爾)會發生什麼:

private Boolean isTest; 

    public Boolean getTest() { 
     return isTest; 
    } 

    public void setTest(Boolean test) { 
     isTest = test; 
    } 

嗯哦!你看到了嗎?應該不是生成的(這Eclipse一樣):

private Boolean isTest; 

    public Boolean getIsTest() { 
     return isTest; 
    } 

    public void setIsTest(Boolean isTest) { 
     isTest = isTest; 
    } 

這看起來好像沒什麼大不了的,但這個小不一致造成了巨大的項目噩夢。原因是這樣的:還有其他層和框架期望將變量完全映射到Java類字段名 - 否則它會失敗,沒有自定義映射邏輯(痛苦和不必要的)。

我們的團隊對所有布爾對象使用is * Name *模式。即使我們的布爾數據庫列名爲is_ 名稱,使用JBoss Hibernate反向工程工具插件將其轉換爲「is * Name *」。

有誰知道如何解決這個問題?是否有一些我們可以配置的代碼生成模板?任何幫助是極大的讚賞。

回答

1

was reported Eclipse爲布爾值生成get<Property>而IDEA生成is<Property>。這是違反規範和用戶請求修復它。

作爲解決這種錯誤當前版本IDEA的結果是工作在根據到JavaBeans規範,並使用僅針對原始boolean類型和get<Property>用於其他類型的包括Boolean這種吸氣劑。

對不起,但沒有辦法在IDEA中配置此行爲。

+0

謝謝。我在您提供的鏈接的帖子中發佈了後續評論。 – jpongin

+0

@CrazyCoder這個變了嗎?我使用的是版本14.1.1,它仍然生成布爾值爲。我錯過了什麼嗎? – stepanian

+0

@stepanian不確定,如果您認爲它違反了最新的規範,請在http://youtrack.jetbrains.com/issues/IDEA提交錯誤。 – CrazyCoder

相關問題