vscode 확장팩에서 아래의 그림과 같이 설치를 해준다.
구글창에 maven을 치면 아래의 그림과 같이 나오고 들어가면 된다.
라이브러리가 저장되어 있는 사이트이다.
검색창에 lombok을 적고 검색해서 아래의 롬복과 함께 다운로드를 해준다.
다운로드 된 jar파일을 lib폴더를 만들어 넣어준다.
vscode의 왼쪽하단에 JAVA PROJECT가 있는 곳에서 해당 그림처럼 확인 해준다.
그럼 완료!!
매개변수=인자=parameter
: 함수에서 전달된 값을 받는 변수
인수=argument
: 전달된 값
@Getter와 @Setter
: 클래스 레벨에 @Getter 또는 @Setter를 선언해줄 경우, 모든 필드에 접근자와 설정자가 자동으로 생성
@NoArgsConstructor 어노테이션
: 파라미터가 없는 기본 생성자를 생성
@AllArgsConstructor 어노테이션
: 모든 필드 값을 파라미터로 받는 생성자
@RequiredArgsConstructor 어노테이션
: final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어줌
this를 적어서 가져오면 파라미터꺼
그냥 a,b 이렇게 적으면 아규먼트꺼
@ToString 어노테이션
: toString() 메소드를 작성
@Data
: @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode을 한꺼번에 설정
주석으로 설명
package ch00;
class Person{
// 인스턴스의 사적인 속성은 private로 숨긴다
private String name;
private boolean male;
public Person(String name, boolean male) {
this.name = name;
this.male = male;
}
// 인스턴스의 사적인 속성을 외부에서 요청할때
// 가공해서 전달할 수 있다
// boolean을 제외한 나머지 타입은 get~을 사용한다.
public String getName(){
return this.name.substring(0, 1) + "씨 입니다.";
}
public void setName(String name){
this.name = name;
}
public void setMale(boolean male){
this.male = male;
}
// boolean은 get 대신에 is를 사용할 수도 있다.
public boolean isMale(){
return this.male;
}
// @Override와 같은 것들을 어노테이션
// 주석 -> 사람이 보라고 만든 설명
// 어노테이션 -> 컴파일러, JVM 등이 읽을 수 있는 설명
// Override와 같이 적어도 되고 안적어도 되는 경우가 있다
// 상황에 따라 필수적으로 적어야 되는 어노테이션도 있다.
// 프로그램(컴파일러, JVM)은 어노테이션을 참고해서 특수한 기능을 수행할 수 있다
// 예를 들어 @Override 부모의 메소드를 사용하지 않고 새로운 로직을 사용하겠다는 뜻
@Override
public String toString() {
return "저는 " + this.name + "이고 " + (this.male ? "남자" : "여자") + "입니다.";
}
}
public class Study06 {
public static void main(String[] args) {
// 사람이 태어남
Person person = new Person("홍길동", true);
// 겉으로 봐서는 사람의 이름을 알 수가 없다
// System.out.println(person.name);
// 너 이름이 뭐야?
System.out.println(person.getName());
// 너 남자야?
System.out.println(person.isMale());
// 너에 대해서 설명해줘
// 인스턴스를 print하면 toString메소드가 실행된다
System.out.println(person);
System.out.println(person.toString());
Person person2 = new Person("김자옥", false);
System.out.println(person2);
Person nick = person2;
System.out.println(nick);
// 남자로 성전환 해
person2.setMale(true);
System.out.println(person2);
// 임꺽정으로 이름 바꿔
person2.setName("임꺽정");
System.out.println(person2);
}
}
주석으로 설명
package ch00;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
// 롬복 라이브러리
// 어노테이션을 읽어서 생성자를 만들어준다.
@AllArgsConstructor
@NoArgsConstructor
// getName, setName 등 필드의 데이터를 읽거나 수정하는 메소드를 자동으로 만들어준다
@Getter
@Setter
// 인스턴스의 정보를 정리해서 보여주도록 toString을 오버라이딩한다.
@ToString
class Cat{
private String name;
private boolean male;
public char[] name2;
// 생성자를 만들었는데
// 이렇게 만들지 않아도 어노테이션을 붙이면 그냥 쉬움
// public Cat(String name, boolean male) {
// this.name = name;
// this.male = male;
// }
// lombok 사용 중에도 변경하고 싶은 메소드만 작성하면
// 나머지는 기본적으로 작성이 되고
// 직접 작성한 것은 덮어씌어진다
public String getName(){
return this.name + "입니다";
}
}
public class Study07 {
public static void main(String[] args) {
// 고양이 태어남
Cat cat = new Cat();
// 고양이야 이름이 뭐야?
System.out.println(cat.name2);
// 고양이 수컷이야?
System.out.println(cat.isMale());
// 이름 나옹이로 바꿔줘
cat.setName("냐옹이");
// 너에 대해서 알려줘
// cat 또는 cat.toString()
System.out.println(cat);
}
}
주석으로 설명
package ch00;
import lombok.Getter;
import lombok.ToString;
class Animal {
protected String name;
}
@ToString
@Getter
class Cat extends Animal {
public Cat(String name){
this.name = name;
}
public void cry(){
System.out.println("야옹");
}
}
public class Study08 {
public static void main(String[] args) {
Cat cat = new Cat("dd");
cat.cry();
// 조상 클래스로 캐스팅하는 것을 업캐스팅이라고 한다
Animal animal = (Animal) cat;
// 자손이 cry를 가지고 있더라도
// 업캐스팅 시 사용할 수 없다
// animal.cry();
// 자손 클래스로 캐스팅하는 것을 다운캐스팅이라고 한다
Cat cat1 = (Cat) animal;
cat1.cry();
System.out.println(cat1);
Animal animal2 = new Animal();
Cat cat2 = (Cat) animal2;
cat2.cry();
}
}
주석으로 설명
package ch00;
import lombok.Getter;
import lombok.ToString;
// 데이터를 고정적으로 제한할 때 사용한다
enum Gender{
MALE, FEMALE
}
@Getter
@ToString
class Person{
private String name;
private String gender;
public Person(String name, Gender gender) {
this.name = name;
this.gender = gender.name();
}
}
public class Study11 {
public static void main(String[] args) {
Person person = new Person("홍길동", Gender.MALE);
System.out.println(person);
}
}
숨겨져 있는 파일을 다 볼 수 있는 프로그램이다.