您可以在Eclipse中创建各种Java代码模板

窗口>首选项> Java >编辑器>模板

e.g.

Sysout扩展为:

System.out.println(${word_selection}${});${cursor}

您可以通过输入sysout加上CTRL+SPACE来激活它

您目前使用哪些有用的Java代码模板?包括它的名称和描述,以及为什么它很棒。

我正在寻找一个模板的原始/新颖的使用,而不是一个内置的现有功能。

创建Log4J日志记录器 从显示中获取swt颜色 Syncexec - Eclipse框架 单例模式/Enum单例生成 Readfile 常量 Traceout 格式字符串 注释代码审查 字符串格式 尝试最终锁定 消息格式i18n和log Equalsbuilder Hashcodebuilder Spring对象注入 创建FileOutputStream


当前回答

这省去了大量打印/记录本地值的繁琐工作。它自动捕获字符串中的变量名。这节省了大量的打字和错字改正。

模板:

+ ", ${1:var}: " + ${1:var}

它有两个陷阱:

尽管会提示您选择一个本地/参数/字段,但这并不包括原语:(

只要编译代码时没有错误,就会出现大多数提示。使用这个宏通常会导致语法暂时被破坏,因此需要使用一些杂耍来插入多个变量。没有什么比在变量名中没有错别字更方便的了。

其他回答

我将此用于MessageFormat(使用Java 1.4)。通过这种方式,我可以确保在进行国际化时没有难以提取的连接

i18n

String msg = "${message}";
Object[] params = {${params}};
MessageFormat.format(msg, params);

同样用于日志:

log

if(logger.isDebugEnabled()){
  String msg = "${message}"; //NLS-1
  Object[] params = {${params}};
  logger.debug(MessageFormat.format(msg, params));
}

slf4j日志

${imp:import(org.slf4j.Logger,org.slf4j.LoggerFactory)}

private static final Logger LOGGER = LoggerFactory
    .getLogger(${enclosing_type}.class);

List_methods——为列表生成添加、删除、计数和包含的方法

public void add${listname}(${listtype} toAdd){
    get${listname}s().add(toAdd);
}

public void remove${listname}(${listtype} toRemove){
    get${listname}s().remove(toRemove);
}

public ${listtype} get${listname}(int index){
    return get${listname}s().get(index);
}

public int get${listname}Count(){
    return get${listname}s().size();
}

public boolean contains${listname}(${listtype} toFind){
    return get${listname}s().contains(toFind);
}

${cursor}

id——为简单的JPA @Id插入注释、导入、字段和getter

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

public Long getId(){
    return id;
}

${cursor}
${:import (javax.persistence.GenerationType,javax.persistence.GeneratedValue,javax.persistence.Id)}

根据所选单词创建一个新的JUnit测试用例:

这需要一个记录器(称为_logger:在这个线程中也有一个非常好的模板)。

我是这个模板的忠实粉丝,因为它使我很容易在我想到它们的那一刻就快速地创建未实现的测试用例。他们会坐在那里不及格,提醒我要测试的案子。

${:import(org.junit.Test, org.junit.Assert)}
    @Test
    public void fooTest() throws Throwable {
        try {
            ${cursor}
            Assert.fail("Not Implemented");
        } catch (Throwable e) {
            _logger.error("Failed test", e);
            throw e;
        }
    }

要使用它,输入测试用例的名称(比如testSerializeObject),突出显示单词,并点击Ctrl + Space(或者您为代码辅助配置的任何东西)。

我最喜欢的测试用例模板是记录异常然后重新抛出它们的模板,因为我喜欢在控制台中而不是在JUnit的异常查看器中查看异常。

你喜欢系统吗?在你的测试日志文件中,你总是可以使用类似的东西:

${:import(org.junit.Test, org.junit.Assert)}
@Test
public void ${word_selection}() throws Exception {
    try {
        ${cursor}
        Assert.fail("Not Implemented");
    } catch (Exception e) {
        System.out.println("Failed test");
        e.printStackTrace();
        throw e;
    }
}

我最喜欢的几个是……

1: Javadoc,插入关于该方法是Spring对象注入方法的文档。

 Method to set the <code>I${enclosing_type}</code> implementation that this class will use.
* 
* @param ${enclosing_method_arguments}<code>I${enclosing_type}</code> instance 

2:调试窗口,创建FileOutputStream并将缓冲区的内容写入文件。 用于当你想要比较缓冲区与过去的运行(使用BeyondCompare),或者如果你不能查看缓冲区的内容(通过inspect),因为它太大…

java.io.FileOutputStream fos = new java.io.FileOutputStream( new java.io.File("c:\\x.x"));
fos.write(buffer.toString().getBytes());
fos.flush();
fos.close();