[java] 유용한 Eclipse Java 코드 템플릿 찾기 [닫기]

Eclipse를 통해 다양한 Java 코드 템플릿을 만들 수 있습니다.

창> 환경 설정> Java> 편집기> 템플리트

예 :

sysout 다음으로 확장됩니다.

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

당신은 입력하여이를 활성화 할 수 있습니다 sysout다음CTRL+SPACE

현재 어떤 유용한 Java 코드 템플릿을 사용하고 있습니까? 그것의 이름과 설명을 포함하고 왜 멋진 지.

내장 기능이 아닌 템플릿의 독창적이거나 새로운 사용을 찾고 있습니다.

  • Log4J 로거 작성
  • 디스플레이에서 swt 색상 얻기
  • Syncexec-Eclipse 프레임 워크
  • 싱글 톤 패턴 / Enum 싱글 톤 생성
  • 읽기 파일
  • 콘 스트
  • 쫓다
  • 형식 문자열
  • 주석 코드 검토
  • 문자열 형식
  • 마지막으로 잠금 시도
  • 메시지 형식 i18n 및 로그
  • 이퀄라이저
  • 해시 코드 빌더
  • 스프링 객체 주입
  • FileOutputStream 작성


답변

다음 코드 템플릿은 로거를 생성하고 필요한 경우 올바른 가져 오기를 생성합니다.

SLF4J

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

Log4J 2

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

Log4J

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

소스 .

7 월

${:import(java.util.logging.Logger)}
private static final Logger LOG = Logger.getLogger(${enclosing_type}.class.getName());


답변

여기에 몇 가지 추가 템플릿 : Link I
Link II

난이게 좋아:

readfile

 ${:import(java.io.BufferedReader,  
           java.io.FileNotFoundException,  
           java.io.FileReader,  
           java.io.IOException)}  
 BufferedReader in = null;  
 try {  
    in = new BufferedReader(new FileReader(${fileName}));  
    String line;  
    while ((line = in.readLine()) != null) {  
       ${process}  
    }  
 }  
 catch (FileNotFoundException e) {  
    logger.error(e) ;  
 }  
 catch (IOException e) {  
    logger.error(e) ;  
 } finally {  
    if(in != null) in.close();  
 }  
 ${cursor} 

업데이트 :이 템플릿의 Java 7 버전은 다음과 같습니다.

${:import(java.nio.file.Files,
          java.nio.file.Paths,
          java.nio.charset.Charset,
          java.io.IOException,
          java.io.BufferedReader)}
try (BufferedReader in = Files.newBufferedReader(Paths.get(${fileName:var(String)}),
                                                 Charset.forName("UTF-8"))) {
    String line = null;
    while ((line = in.readLine()) != null) {
        ${cursor}
    }
} catch (IOException e) {
    // ${todo}: handle exception
}


답변

문자열 형식

MessageFormat-선택 사항을 MessageFormat으로 둘러 쌉니다.

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

이를 통해 커서를 문자열로 이동하고 선택을 전체 문자열 (Shift-Alt-Up)로 확장 한 다음 Ctrl-Space를 두 번 확장 할 수 있습니다.

선택 잠금

잠그기-마지막으로 잠그기를 시도하여 선택한 줄을 둘러싸십시오. 잠금 변수가 있다고 가정하십시오.

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

NB ${line_selection}템플릿은 Surround With 메뉴 (Alt-Shift-Z)에 나타납니다.


답변

나는 죽은 게시물을 차고 있지만 완료를 위해 이것을 공유하고 싶었습니다.

결함이있는 이중 검사 잠금 설계를 극복하는 올바른 버전의 싱글 톤 생성 템플릿 (위에서 논의하고 다른 곳에서 언급)

싱글 톤 생성 템플릿 :
이름 지정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();


답변

반복하는 코드 스 니펫 추가 Map.entrySet():

주형:

${:import(java.util.Map.Entry)}
for (Entry<${keyType:argType(map, 0)}, ${valueType:argType(map, 1)}> ${entry} : ${map:var(java.util.Map)}.entrySet())
{
    ${keyType} ${key} = ${entry}.getKey();
    ${valueType} ${value} = ${entry}.getValue();
    ${cursor}
}

생성 된 코드 :

for (Entry<String, String> entry : properties.entrySet())
{
    String key = entry.getKey();
    String value = entry.getValue();
    |
}

스크린 샷


답변

의 경우 log멤버 변수에 추가하는 데 도움이되는 작은 내용입니다.

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


답변

Mockito를 사용하여 모의 객체를 만듭니다 ( “Java 명령문”컨텍스트에서).

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

그리고 “자바 유형 멤버”에서 :

${: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});

Google Guava를 사용하는 새로운 링크 목록 (해시 셋 및 해시 맵과 유사) :

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

또한 Test 클래스를 생성하는 거대한 템플릿을 사용합니다. 다음은 관심있는 모든 사용자가 사용자 정의해야하는 단편화 된 단편입니다.

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