lombok 방식 으로 자바 의 지루 함 을 제거 합 니 다.
우 리 는 이러한 예 를 보 았 다.하나의 표준 자바 빈.전형 적 인 자바 비 안 은 일반적으로 몇 가지 속성 을 가지 고 있다.각 속성 은 하나의 accessor 와 mutator(getter 와 setter)를 가지 고 있 습 니 다.보통 하나의
toString()
방법,하나의equals()
방법 과 하나의hashCode()
방법 이 있다.처음에는 그 중에서 예견 할 수 있 는 군더더기 가 이미 매우 많아 보 였 다.모든 속성 이 하나의 getter 와 setter 를 가지 고 있 으 며,일반적으로 이와 같다 면,왜 상세 하 게 설명 할 필요 가 있 습 니까?
Lombok 좀 봅 시다.코드 줄 을 없 애기 위해 Lombok 은 클래스 와 자바 코드 블록 에 주석 을 사용 합 니 다.앞에서 말 한 자바 비 안 예제 에서 모든 getter,setter 및 기타 세 가지 방법 은 컴 파일 할 때 암시 되 고 포함 되 었 다.
그리고 더 좋 은 것 은 Eclipse 나 IBM 을 사용한다 면® WebSphere® Studio Application Developer(아직 사용 되 지 않 았 다 면 사용 하 는 것 이 좋 습 니 다)는 Lombok 을 자바 프로젝트 에 통합 하여 즉시 개발 결 과 를 얻 을 수 있 습 니 다.다시 말 하면 이 클립 스 컴 파일 러 는 가리 키 는 getters/setters 를 즉시 식별 할 수 있 고 다른 자바 코드 는 이 방법 을 참조 할 수 있다.
가장 직접적인 장점 은 당연히 코드 줄 의 감소 이다.이것 은 정말 좋다.또한,특정한 getter 나 setter 가 특별한 주 의 를 필요 로 한다 면,이 특정한 getter 나 setter 를 찾기 위해 열 줄 의 코드 를 여러 번 사용 할 필요 가 없습니다.코드 도 더욱 간결 해 지고 불필요 해 집 니 다.
Lombok 은 자바 bean 뿐만 아니 라 코드 의 다른 부분 도 간소화 할 수 있 습 니 다.예 를 들 어 try/catch/finally 블록 내 및 동기 화 방법 내의 불필요 한 코드 도 줄 일 수 있다.
이제 우 리 는 당신 자신의 개발 환경 에서 어떻게 상술 한 목적 을 실현 할 수 있 는 지 봅 시다.
설 치 를 하려 면 본 고 는 Eclipse 나 WebSphere Studio Application Developer 를 사용한다 고 가정 합 니 다.그렇지 않 으 면 Lombok 을 사용 할 수 있 습 니 다.하지만 개발 시 여러 가지 이점 을 누 릴 수 는 없다.그러나 컴 파일 시의 이점 을 이용 할 수 있 습 니 다.
우선,브 라 우 저 를 열 고 URL 을 가리 키 십시오
http://projectlombok.org/
.본문 을 작성 할 때 이 URL 로 열 린 페이지 의 오른쪽 상단 에 큰 단어 가 나타 납 니 다.이 단 어 는'다운로드'다.이 단 어 를 누 르 고 lombok.jar 를 다운로드 하기 시작 합 니 다.이 파일 은 압축 을 풀 필요 가 없고 다른 사이트 에서 다운로드 한 파일 중 99%가 압축 을 풀 어야 합 니 다.
이 파일 을 다운로드 한 후 이 JAR 파일 을 실행 해 야 합 니 다.운영 체제 에서 프롬프트 를 열 고 lombok.jar 가 설 치 된 디 렉 터 리 에 들 어가 서 입력 하 십시오
java -jar lombok.jar
.이 가설 은 사용자 의 경로 에 자바 런 타임 환경(JRE)이 있다 고 가정 합 니 다.없 으 면 추가 해 야 합 니 다.추가 방법 을 알 고 싶다 면 구체 적 인 운영 체제 에 대한 문 서 를 참고 하 십시오.
하면,만약,만약...® Windows®,그럼 이 lombok.jar 아이콘 도 더 블 클릭 할 수 있 습 니 다.마찬가지 로 그래 픽 사용자 인터페이스(GUI)에서 JAR 을 실행 할 수 있어 야 합 니 다.
어떤 식 으로 든 Lombok 설치 화면 을 볼 수 있 을 것 이다.이 화면 은 Eclipse 나 WebSphere Studio Application Developer 가 실행 할 수 있 는 파일 이 어디 에 있 는 지 질문 합 니 다.그것 의 기본 위 치 는 정확 할 수 있다.이 기본 위 치 를 바 꿔 야 할 때 가 있 습 니 다.
Install/Update 를 누 르 면 Lombok 은 Eclipse 개발 환경 에 빠르게 합 쳐 집 니 다.이 클립 스 가 실행 되 었 다 면 닫 고 다시 시작 해 야 합 니 다.
이 제 는 Eclipse 나 WebSphere Studio Application Developer 에서 Lombok 을 사용 할 수 있 습 니 다.목록 1 의 코드 를 참고 하 세 요.
목록 1.자바 빈 의 좋 은 시작
public class Lure {
private String name;
private int size;
private String color;
private String style;
}
이상 은 간단 한 자바 빈 의 전형 적 인 시작 이 었 다.여기에서 모든 속성 에 getters 와 setters 를 추가 할 수 있 습 니 다.그리고 하나
equals()
방법,하나toString()
방법 과 하나hashCode()
방법 을 추가 합 니 다.Lombok 이 있 으 면 위 작업 을 스스로 완성 할 필요 가 없습니다.반대로 설명 을 하나 추가 하 십시오:
@Data
.그래,그렇게 간단 해.리스트 2 에는
@Data
이 포함 되 어 있다.목록 2.자바 빈 의 더 좋 은 시작
import lombok.Data
public @Data class Lure {
private String name;
private int size;
private String color;
private String style;
}
그러나 lombok.jar 가 구축 경로 에 있 고 lombok.Data 가 이 자바 클래스 에 가 져 올 때 만 이 코드 가 효 과 를 볼 수 있다 는 것 을 기억 하 십시오.
Eclipse 나 WebSphere Studio Application Developer 에서 이 종류의 개 요 를 보면(보통 화면 에 있 는 이 종류의 오른쪽 에 있 음)이 방법 들 이 자동 으로 추 가 됩 니 다
Lure
.이 개 요 를 바로 볼 수 없다 면 Eclipse 내 Window 메뉴 를 클릭 하고 Show View 를 선택 하 십시오.팝 업 메뉴 에서 Outline 을 선택 하면 화면 오른쪽 에 나타 나 야 합 니 다.클래스 의 개 요 를 강제로 표시 하 는 단축 키 조합 은 Alt+Shift+Q 이 고,그 다음은 O 입 니 다.
실례 화
Lure
를 위 한 다른 종 류 를 만 들 었 다 면Lure
암 시 된 방법(예 를 들 어getName()
이나setSize()
에 대한 접근 을 즉시 가 질 수 있 습 니 다.equals()
,hashCode()
,toString()
에 대한 방문 도 가능 합 니 다.잘 했 어,그렇지?Eclipse 나 WebSphere Studio Application Developer 를 사용 하지 않 는 다 면 이 코드 를 실제 컴 파일 할 때 만 인 정 받 을 수 있 는 방법 을 추가 합 니 다.따라서 Eclipse 나 WebSphere Studio Application Developer 가 없 을 때 도 Lombok 을 사용 할 수 있 지만 Lombok 의 최초 디자인 목적 은 Eclipse 나 WebSphere Studio Application Developer 와 통합 하 는 것 이다.
getter/setter 방법 을 만 들 때 Lombok 은 전통 적 인 기준 을 따른다.모든 방법 명 은
get
또는set
로 시작 하고 속성 명 은 대문자 이다.물론 속성 이 불 리 언 이 라면 상황 은 예외다.이런 상황 에서 getter 는is
가 아 닌get
으로 시작한다.이것 은 자바 빈 의 표준 실천 이다.현재 자바 비 안 이 getter 에 특별한 요 구 를 가지 고 있다 고 가정 합 니 다.목록 2 의 예 에서
getStyle()
색상 과 크기 의 조합 을 되 돌려 줄 수 있 습 니 다.이 경우 원 하 는 대로getStyle()
방법의 코드 를 작성 할 수 있 습 니 다.Lombok 은 코드 를 검사 하고 이 속성 을 기반 으로 자신의getStyle
버 전 을 만 들 지 않 습 니 다.또 getter 방법 이 있다 고 가정 하면 공개 하고 싶 지 않 습 니 다.이 를 위해 Lombok 은 추가 인 자 를 입력 할 수 있 습 니 다.목록 3 은 맞 춤 형 수정자(modifier)를 보 여 줍 니 다.
목록 3.맞 춤 형 수정자
private String name;
@Getter(AccessLevel.PROTECTED) private int size;
private String color;
private String style;
이 사례 에서
getSize()
방법 은 공개 되 지 않 을 것 이다.그것 은 보 호 받 는 장식 부 호 를 가지 고 있 기 때문에 파 생 자 류 에 만 사용 할 수 있 고Lure
류 자체 의 내부 에 있다.Lombok 이 제공 하 는 다른 기본 값 을 항상 받 아들 이 고 싶 지 않 을 수도 있 습 니 다.예 를 들 어
toString()
방법 은 클래스 이름과 모든 속성 이름과 값 을 열거 하고 중간 에 쉼표 로 분할 합 니 다.이 목록 은 클래스 이름 옆 에 있 습 니 다.예 를 들 어 이
Lure
유형 을 기록 할 때 색상 에 관심 이 없다 고 가정 합 니 다.toString()
의 기본 설정 을 변경 하기 위해 서 는ToString
설명 을 사용 해 야 합 니 다.명세서 4.수정
toString()
@ToString(exclude="color")
public @Data class Lure {
private String name;
private int size;
private String color;
private String style;
}
실례 화 된
Lure
클래스 를 출력 하면 다음 과 유사 해 보일 것 입 니 다.Lure(name=Wishy-Washy, size=1, style=trolling)
색상 이 포함 되 지 않 았 음 을 알 았 습 니까?이것 은 이전에 Lombok 에 색상 이 포함 되 지 않 는 다 고 주석 으로 알려 주 셨 기 때 문 입 니 다.
equals()
과hashCode()
방법 을 어떻게 처리 해 야 하 는 지 수정 할 수 있 습 니 다.명세서 5 는 매우 솔직 해서 지나치게 설명 할 필요 가 없다.명세서 5.수정
hashCode()
@EqualsAndHashCode(exclude="style")
public @Data class Lure {
private String name;
private int size;
private String color;
private String style;
}
이 예 에서
equals()
와hashCode()
방법 이 생 성 되 었 을 때style
속성 은 포함 되 지 않 았 다.당신 도 try/catch/finally 블록 을 만 드 는 것 을 매우 미워 하 셨 습 니까?나 는 이렇다.다행히 Lombok 이 있 으 니 그 럴 필요 가 없습니다.Lombok 이 자바 의 군 더 더 더 기 를 없 애 는 또 다른 방식 이기 도 하 다.try/catch/finally 블록 의 번 거 로 움 을 없 애기 위해 서 는
@Cleanup
설명 만 사용 하 십시오.리스트 6 참조.명세서 6.사용
@Cleanup
주석public static void main(String[] args) throws IOException {
@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream(args[1]);
//write file code goes here
}
상술 한 코드 는 우리 가 통상 적 으로 표준 자바 코드 에서 본 것 보다 훨씬 깔끔 하 다.호출 된 코드 에 의 해 캡 처 된 이상 을 던 져 야 합 니 다(이 예 에서
IOException
.목록 6 의 이 코드 블록 은 try/catch/finally 블록 을 제거 할 뿐만 아니 라 개방 흐름 도 닫 았 습 니 다.처리 대상 이
close()
가 아 닌 방법 을 사용 하여 자원 을 방출 하려 면 추가 설명 이 있 는 주석 으로 이 방법 을 호출 해 야 합 니 다.예 를 들 어@Cleanup("relinquish")
.Lombok 은 동기 화 방법 에 필요 한 코드 의 번 거 로 움 도 줄 일 수 있다.자 연 스 럽 습 니 다.이것 은
@Synchronized
방법 으로 이 루어 진 것 입 니 다.명세서 7.사용
@Synchronized
주석@Synchronized
private int foo() {
//some magic done here
return 1;
}
이 예 에서 Lombok 은
$lock
라 는 인 스 턴 스 대상 을 자동 으로 만 들 고 이 대상 에 대한 동기 화 방법foo()
을 만 듭 니 다.@Synchronized
주석 을 사용 하 는 이 방법 이 정적 이면 Lombok 은$LOCK
이라는 클래스 대상 을 만 들 고 이 대상 을 대상 으로 동기 화 합 니 다.추가 매개 변 수 를 통 해 명시 적 잠 금 을 할 대상 을 지정 할 수 있 습 니 다.예 를 들 어
@Synchronized("myObject")
대상 myObject
을 대상 으로 동기 화 하 는 방법 이다.이런 상황 에서 그것 을 명시 적 으로 정의 해 야 한다.Lombok 을 사용 하면 모든 응용 프로그램 개발 자 들 이 최선 을 다 해 실현 할 수 있 는 목 표를 실현 할 수 있 습 니 다.번 거 로 움 을 없 애 는 것 입 니 다.
코드 를 더 잘 읽 을 수 있 습 니 다.자바 비 안에서'특수'(즉 전형 적 인 기준 을 따 르 지 않 음)를 찾 는 대량의 속성 을 가 진 getter 와 setter 방법 은 더욱 간편 할 것 이다.이것 은 이러한 특수 한 getter/setter 방법 만 실제 인 코딩 되 어야 하기 때문이다.
Lombok 은 코드 의 깔끔 함,효율 성 향상,불필요 한 감소 에 도움 이 된다.왜 당신 의 환경 내 에서 시도 해 보지 않 습 니까?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.