2017-12-14 4 views
0

Eclipse를 사용하고 있습니다. null이 아닌지 확인하기 위해 종종 java.util.Objects.requireNonNull(T,String)을 사용하고 주어진 param이 null 일 때 적절한 메시지로 예외를 throw합니다. 예를 들어표현식을 Null Check로 신속하게 변환하는 방법은 무엇입니까?

, 나는 이클립스의 도움으로 생성자를 생성 할 때 : 경우 매개 변수에

public Person(String firstName,String lastName){ 
    this.firstName = firstName; 
    this.lastName = lastName; 
} 

은 (모든이있을 수 있습니다) 필수 좀 더 강력한 뭔가를 변경하려면를

public Person(String firstName,String lastName){ 
    this.firstName = requireNonNull(firstName,"firstName is required"); //static import omitted 
    this.lastName = requireNonNull(lastName,"lastName is required"); 
} 

Search: (\w+) (assuming variables do not use underscores) 
Replace: requireNonNull\($1,"$1 is required"\) 
을 :

현재 나는 내 정규식 내가 수동으로 조심스럽게 사용하는 것이 대체 &을 찾을 수 있습니다

이 작업을 수동으로 적용하십시오. 특히 양쪽 끝에 세미콜론 ;을 사용하면 자동 생성 생성자와 설정자를 변환하는 데 도움이됩니다.

내 질문은 우수한 수준으로 이동에 : 매크로 나 다른 뭔가를 사용하여 키 입력 또는 클릭을 줄이기 위해 가능하면 당신이 알고 (어떤 사용자 정의 플러그인하시기 바랍니다 가능한 경우) 그 에디터 선택 때문에requireNonNull 호출로 변환됩니까?

예.

public Person(String firstName,String lastName){ 
    this.firstName = __firstName__; //__ means editor highlight 
    this.lastName = lastName; 
} 

import static java.util.Objects.*; 

public Person(String firstName,String lastName){ 
    this.firstName = requireNonNull(firstName,"firstName is required"); 
    this.lastName = lastName; 
} 

일예를이되다

public Person(Individual other){ //Individual might carry null values out of my control 
    requireNonNull(other); 
    this.firstName = __other.getFirstName()__; //__ means editor highlight 
    this.lastName = other.getLastName(); 
} 

이된다

public Person(Individual other){ 
    requireNonNull(other); 
    this.firstName = requireNonNull(other.getFirstName(),"other.getFirstName() is required"); //I may modify the text later, but this is a good starting point 
    this.lastName = other.getLastName(); 
} 

소스 파일에 정적 수입의 추가는 필수는 리터럴가 교체 된 후 나는 이클립스 나를 위해 가져 오기를 추가 할 수 있도록 Favorites을 사용할 수 있습니다 즉,

답변

2

그런 일식 코드 템플릿을 사용할 수 있습니다. 설정> Java> 편집기> 템플리트으로 이동하여 Java 컨텍스트에 대한 새 템플리트를 작성하십시오. 선택을 취소 "자동 삽입"및 패턴 필드에 다음 코드를 붙여 넣습니다

${:importStatic('java.util.Objects.requireNonNull')}requireNonNull(${word_selection}, "${word_selection} is required")${cursor} 

지금 당신은 대체를 눌러 Ctrl + 공간을 두 번 할 변수를 선택하여 코드에서이 템플릿에 액세스 할 수 있습니다.

사이드 노트 : Project Lombok을 살펴보아야합니다. 그 중에서도 자동 컴파일시 이러한 nullchecks을 삽입하는 @NonNull 주석을 소개합니다, 그래서 당신은 이런 식으로 물건을 수행 할 수 있습니다

public Person(@NonNull String firstName, @NonNull String lastName){ 
    this.firstName = firstName; 
    this.lastName = lastName; 
} 
+0

우수함. 안타깝게도 선택 영역의 CTRL + 공백은 아무 것도하지 않아서 나에게는 효과가 없습니다. 또한 변수 이름 끝에 CTRL-space를 두 번 누르면 "No template proposals"가 표시됩니다. 이로 인해 손상된 작업 공간 구성이 걱정됩니다. 그 일을 할 것인가? –

관련 문제