2015-12-11 40 views
2

我需要一个Eclipse或IDEA插件来在java中生成字段名称常量字符串。例如,在ORM我们经常会定义一个类像这样:在java中生成字段常量字符串的工具?

class DealDB { 
    pubic String dealId; 
} 

与Eclipse或想法,我们可以生成获取和设置方法,但我们不能生成字段名常量字符串。当我们用java编写查询代码时,我们经常需要这个常量字符串。

class DealDB { 
    public String dealId; 

    // to generate this 
    public static final String FIELD_DEALID="dealId"; 
} 

可以延伸lombok(https://projectlombok.org/)可以实现这个。

+0

您至少可以在Eclipse中定义自己的模板。 – Berger

+1

我强烈劝阻你使用这样的常量。它会让你的代码更难阅读。例如:“从交易d中选择d,其中d.dealId =:dealId”比“从交易d中选择d”更清晰,其中d。“ + Deal.FIELD_DEALID +“=:dealId”'。而且你会使用这些常数越多,它会变得越糟糕。使用单元测试来确保您的查询是正确的,并做正确的事情。 –

+0

@JBNizet我们使用morphia来查询mongodb,我们写了如下代码:Query query = datastore.createQuery(DealDB.class); query.field(“created”)。greaterThanOrEq(12345);',用const字段字符串替换“created”后,我们可以更有效地编写代码,并且可以轻松地搜索哪些代码使用此字段。 – xufan

回答

1

在IntelliJ中,我可以推荐一些不完全符合你的要求的东西,但它很接近。

取下面的代码示例,其中包含字符串"dealId"

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

将光标定位在"dealId"和命中按Ctrl - Alt键 - Visual C(重构:创建常数)。

的IntelliJ会弹出一个对话框,然后为你创造了以下内容:

public static final String DEAL_ID = "dealId"; 

您也可以选择到“替换所有出现”和“移动到另一个阶级”。