java - 如何使用eclipse Java 代码模板?

  显示原文与译文双语对照的内容

你可以通过以下方法在 Eclipse 中创建各种Java代码模板


Window->Preferences->Java -> Editor -> Templates

: )

sysout 扩展到:


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

你可以通过键入 sysout 后再键入 CTRL+SPACE 来激活它

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

上有一个开放的bounty这里当作真品/小说使用一个模板,而不是一个内置的现有功能。

  • 创建 Log4J 记录器
  • 从显示获得swt颜色
  • Syncexec - Eclipse 框架
  • 单一模式/枚举单实例生成
  • Readfile
  • Const
  • Traceout
  • 格式字符串
  • 评论代码评审
  • 字符串格式
  • 尝试最后锁定
  • 消息格式 i18n 和日志
  • Equalsbuilder
  • Hashcodebuilder
  • spring 对象注入
  • 创建 FileOutputStream
时间:

创建 Log4J 记录器:


${:import(org.apache.log4j.Logger)}
private static final Logger LOGGER = Logger.getLogger(${enclosing_type}.class);

它都创建了具有适当类别和的记录器。

使用 SLF4J, 为 those:


${:import(org.slf4j.Logger,org.slf4j.LoggerFactory,org.slf4j.Logger,org.slf4j.Logger)}
private static final Logger LOGGER = LoggerFactory.getLogger(${enclosing_type}.class);

格式化字符串

MessageFormat - 用一个MessageFormat包围选定内容。


 ${:import(java.text.MessageFormat)} 
 MessageFormat.format(${word_selection}, ${cursor})

这允许我将光标移动到字符串中,将选定内容扩展到整个字符串( Shift-Alt-Up ),然后双击两次。

锁定选区

锁定- 用 try finally lock锁定来包围选中的行。 假设存在锁变量。


${lock}.acquire();
try {
 ${line_selection}
 ${cursor}
} finally {
 ${lock}.release();
}

在与 环绕的菜单中显示 up. NB ${line_selection} 模板

我知道我是踢一个死于完成sake,相关帖子,但想分享 this:

一个正确版本的singleton生成模板,它克服了有缺陷的double-checked锁定设计( 上面讨论过并提到了其他问题)

单例创建样板: 命名这个 createsingleton


static enum Singleton {
 INSTANCE;

 private static final ${enclosing_type} singleton = new ${enclosing_type}();

 public ${enclosing_type} getSingleton() {
 return singleton;
 }
}
${cursor}


要访问使用上面生成的单例类型:

这里 getsingleton: 单例引用模板: 名称


${type} ${newName} = ${type}.Singleton.INSTANCE.getSingleton();

我的爱是 foreach: 之一


for (${iterable_type} ${iterable_element} : ${iterable}) {
 ${cursor}
}

traceout,因为我使用它来跟踪:

System.out.println("${enclosing_type}.${enclosing_method}()" ) ;

通过互联网的将来有一天: 有关的是找到其他选项,只是觉得


private static final ${type} ${name} = new ${type} ${cursor};

使用 mockito ( 中"java语句创建 mock:


${:importStatic('org.mockito.Mockito.mock')}${Type} ${mockName} = mock(${Type}.class);

在"java类型成员"中:


${:import(org.mockito.Mock)}@Mock
${Type} ${mockName};

模拟void方法以引发异常:


${:import(org.mockito.invocation.InvocationOnMock,org.mockito.stubbing.Answer)}doThrow(${RuntimeException}.class).when(${mock:localVar}).${mockedMethod}(${args});

模拟void方法来执行以下操作:


${:import(org.mockito.invocation.InvocationOnMock,org.mockito.stubbing.Answer)}doAnswer(new Answer<Object>() {
public Object answer(InvocationOnMock invocation) throws Throwable {
 Object arg1 = invocation.getArguments()[0];
 return null;
}
}).when(${mock:localVar}).${mockedMethod}(${args});

验证被模仿的方法只调用一次:


${:importStatic(org.mockito.Mockito.verify,org.mockito.Mockito.times)}verify(${mock:localVar}, times(1)).${mockMethod}(${args});

验证模拟的方法从未调用过:


${:importStatic(org.mockito.Mockito.verify,org.mockito.Mockito.never)}verify(${mock:localVar}, never()).${mockMethod}(${args});

使用谷歌 Guava ( hashset和hashmap相似)的新链接列表:


${import:import(java.util.List,com.google.common.collect.Lists)}List<${T}> ${newName} = Lists.newLinkedList();

我还使用了一个巨大的模板生成一个测试类,这里有一个简短的Fragment,每个人都应该定制它:


package ${enclosing_package};

import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import org.mockito.Mockito;
import org.slf4j.Logger;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.junit.runner.RunWith;

//TODO autogenerated test stub
@RunWith(MockitoJUnitRunner.class)
public class ${primary_type_name} {

 @InjectMocks 
 protected ${testedType} ${testedInstance};
 ${cursor}

 @Mock
 protected Logger logger;

 @Before
 public void setup() throws Exception {
 }

 @Test
 public void shouldXXX() throws Exception {
//given

//when
//TODO autogenerated method stub

//then
 fail("Not implemented.");
 }
}
//here goes mockito+junit cheetsheet

在当前作用域( illarg ) 中抛出一个带有变量的IllegalArgumentException:


throw new IllegalArgumentException(${var});

更佳


throw new IllegalArgumentException("Invalid ${var}" + ${var}); 

...