您可以在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


当前回答

我看到了一个创建基本测试类的模板的答案,如果你更喜欢这种方法,这里有一些单独的调用:

使用@Before import创建setUp方法

${:import(org.junit.Before)}
@Before
public final void setUp() {
  ${cursor}
}

使用@Test import创建新的测试方法

${:import(org.junit.Test)}
@Test
public final void test${newName} () {
${cursor}
}

我使用以下代码来帮助在类型和dto之间进行JAXB转换:

将现有变量转换为返回值类型的模板(与形参一起使用)

${return_type} ${name} = null;

if (${var} != null) {
    ${name} = new ${return_type}();
    ${cursor}
}
return ${name};

其他回答

春天注入

我知道这有点晚了,但这里是我在一个类中使用的Spring Injection:

${:import(org.springframework.beans.factory.annotation.Autowired)}
private ${class_to_inject} ${var_name};

@Autowired
public void set${class_to_inject}(${class_to_inject} ${var_name}) {
  this.${var_name} = ${var_name};
}

public ${class_to_inject} get${class_to_inject}() {
  return this.${var_name};
}

Null检查!

if( ${word_selection} != null ){
    ${cursor}
}

if( ${word_selection} == null ){
    ${cursor}
}

为一个事件创造一切

因为在Java中创建事件有点麻烦——所有这些接口、方法和东西都要为一个事件编写——我制作了一个简单的模板来创建一个事件所需的一切。

${:import(java.util.List, java.util.LinkedList, java.util.EventListener, java.util.EventObject)}

private final List<${eventname}Listener> ${eventname}Listeners = new LinkedList<${eventname}Listener>();

public final void add${eventname}Listener(${eventname}Listener listener)
{
    synchronized(${eventname}Listeners) {
        ${eventname}Listeners.add(listener);
    }
}

public final void remove${eventname}Listener(${eventname}Listener listener)
{
    synchronized(${eventname}Listeners) {
        ${eventname}Listeners.remove(listener);
    }
}

private void raise${eventname}Event(${eventname}Args args)
{
    synchronized(${eventname}Listeners) {
        for(${eventname}Listener listener : ${eventname}Listeners)
            listener.on${eventname}(args);
    }
}

public interface ${eventname}Listener extends EventListener
{
    public void on${eventname}(${eventname}Args args);
}

public class ${eventname}Args extends EventObject
{
    public ${eventname}Args(Object source${cursor})
    {
        super(source);
    }
}

如果您有共享单个eventtobject的事件,只需删除模板插入的自定义事件,并更改raise___()和____()上的适当部分。

我已经使用泛型接口和泛型类编写了一个漂亮、小巧、优雅的事件机制,但由于Java处理泛型的方式,它无法工作。=(

编辑: 1)我遇到了线程在事件发生时添加/删除侦听器的问题。List在使用时不能被修改,所以我在侦听器列表被访问或使用的地方添加了同步块,锁定在列表本身上。

对于log,在成员变量中添加一个有用的小调。

private static Log log = LogFactory.getLog(${enclosing_type}.class);

这里有更多的模板。

包括:

从特定的日期创建一个日期对象 创建一个新的泛型数组列表 日志设置 指定级别的日志 创建一个新的通用HashMap 遍历映射,打印键和值 使用SimpleDateFormat解析时间 逐行读取文件 记录并重新抛出捕获的异常 打印代码块的执行时间 创建定时定时器 将字符串写入文件