-- Kütüphaneler

Lombok nedir,nasıl kullanılır?

POJO sınıflarını tanımlarken kullandığımız değişkenler, get/set, toString ve equal metodları,constructorlar satır sayısı açısından oldukça yer kaplar,lombok bu satır sayısını bir notasyon yardımıyla azaltmaya yarayan kütüphanedir.Netbeans kullananların maven dependency kodunu pom.xml dosyasına eklemesi yeterlidir,İntellij ve Eclipse kullananlar ayrıca plugin indirip İDE’ye tanıtması gerekmektedir.İntellij kullandığım için onun üzerinden anlatacağım.

Settings > Plugin > Browse repositories yolunu izleyip arama kısmına “Lombok Plugin” yazıyoruz,daha sonra sağ taraftan install tuşuna basıyoruz.İntellij’yi kapatıp açıyoruz.

Lombok için maven dependency :

<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.16.12</version>
		<scope>provided</scope>
</dependency>

Lombok kullanmadan bir pojo sınıfı oluşturalım.Aşağıdaki gibi olsun.

public class Student {

    private String firstName;
    private String lastName;
    private String department;
    private int grade;
    private int idNumber;
    private int phoneNumber;
    private int studentNumber;

    public Student() {

    }

    public Student(String firstName, String lastName, String department, int grade, int idNumber, int phoneNumber, int studentNumber) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.department = department;
        this.grade = grade;
        this.idNumber = idNumber;
        this.phoneNumber = phoneNumber;
        this.studentNumber = studentNumber;
    }

    @Override
    public String toString() {
        return firstName + " " + lastName + " " + department + " " + grade + " " + idNumber + " " + phoneNumber + " "
                + studentNumber;

    }

    public String getFirstName() {return firstName;}

    public void setFirstName(String firstName) {this.firstName = firstName;}

    public String getLastName() {return lastName;}

    public void setLastName(String lastName) {this.lastName = lastName;}

    public String getDepartment() {return department;}

    public void setDepartment(String department) {this.department = department;}

    public int getGrade() {return grade;}

    public void setGrade(int grade) {this.grade = grade;}

    public int getIdNumber() {return idNumber;}

    public void setIdNumber(int idNumber) {this.idNumber = idNumber;}

    public int getPhoneNumber() {return phoneNumber;}

    public void setPhoneNumber(int phoneNumber) {this.phoneNumber = phoneNumber;}

    public int getStudentNumber() {return studentNumber;}

    public void setStudentNumber(int studentNumber) {this.studentNumber = studentNumber;}
}

 

Lombokta birçok notasyon var.Bunlardan @Getter,@Setter ve @ToString notasyonlarını kullanarak başlayalım.

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@ToString(includeFieldNames = false)
public class Student {
    
    @Getter @Setter private String firstName;
    @Getter @Setter private String lastName;
    @Getter @Setter  private String department;
    @Getter @Setter  private int grade;
    @Getter @Setter  private int idNumber;
    @Getter @Setter  private int phoneNumber;
    @Getter @Setter private int studentNumber;


    public Student(String firstName, String lastName, String department, int grade, int idNumber, int phoneNumber, int studentNumber) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.department = department;
        this.grade = grade;
        this.idNumber = idNumber;
        this.phoneNumber = phoneNumber;
        this.studentNumber = studentNumber;
    }
}

@ToString notasyonunda yazan İncludeFieldName default olarak true gelir ve ToString metodunun değişken isimlerini de yazmasını ister.Satır sayısı baya azaldı,peki orda irice duran constructor için ne yapılabilir? @AllArgConstructor notasyonunu kullanalım.

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;

@Data
@AllArgsConstructor
@ToString(includeFieldNames = false)
public class Student {

    private String firstName;
    private String lastName;
    private String department;
    private int grade;
    private int idNumber;
    private int phoneNumber;
    private int studentNumber;
}

Daha önce sınıfı @Getter ve @Setter notasyonlarıyla işaretlemiştik bunun yerine sınıfı @Data notasyonu ila işaretlersek tek notasyonla tüm alanlar için get ve set metodları oluşturulur.Bunun yanında @RequiredArgConstructor ve @NoArgConstructor notasyonları da vardır.

Basitçe şu şekilde bir main sınıfı yazalım ve çıktısını görelim.

public class Main {

    public static void main(String args[]){

        Student student = new Student("Meriç","BERBER","Computer Engineering",3,1111,2222,3333);
        System.out.print(student.toString());
    }
}

Program Çıktısı :

Student(Meriç, BERBER, Computer Engineering, 3, 1111, 2222, 3333)

Lombok kısaca bu şekilde,anlatmadığım birkaç notasyon daha var.Hepsine buraya tıklayarak ulaşabilirsiniz.

 

 

Yorum bırak

Yorum