Lombok: λΉŒλ”κ°€ μ œλ„€λ¦­μ— λŒ€ν•΄ 잘λͺ»λœ μœ ν˜•μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2017λ…„ 10μ›” 24일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: projectlombok/lombok

둬볡 버전: 1.16.18

μ œλ„€λ¦­μ—μ„œ Lombok λΉŒλ”λ₯Ό μ‚¬μš©ν•˜λ©΄ 잘λͺ»λœ μœ ν˜•κ³Ό κ΄€λ ¨λœ 컴파일 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

public class Main {

    public static abstract class Animal {
    }

    public static class Dog extends Animal {
    }

    <strong i="7">@Getter</strong>
    <strong i="8">@Setter</strong>
    public static class SimpleBuilder<ANIMAL extends Animal> {
        private ANIMAL animal;
    }

    <strong i="9">@Getter</strong>
    @lombok.Builder
    public static class LombokBuilder<ANIMAL extends Animal> {
        private ANIMAL animal;
    }

    public static void main(String[] args) {
        //COMPILES OK:
        final SimpleBuilder<Dog> simpleBuilder = new SimpleBuilder<>();
        simpleBuilder.setAnimal(new Dog());

        //COMPILATION ERROR:
        final LombokBuilder<Dog> lombokBuilder = LombokBuilder.builder().animal(new Dog()).build();
    }
}

LombokBuilderμ—μ„œ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

Required: LombokBuilder <Dog>
Found: LombokBuilder <Animal>

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ¬Έμ œλŠ” ν˜•μ‹ μœ μΆ”μ™€ 관련이 μžˆμŠ΅λ‹ˆλ‹€. 그것은 당신이 μƒκ°ν•˜λŠ” κ²ƒλ§ŒνΌ 멀리 가지 μ•ŠμŠ΅λ‹ˆλ‹€. LombokBuilder.builder() ν˜ΈμΆœμ€ 무엇을 μž…λ ₯할지에 λŒ€ν•œ λ‹¨μ„œκ°€ μ—†μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ»΄νŒŒμΌλŸ¬κ°€ μ»΄νŒŒμΌλ˜λ„λ‘ μ•½κ°„ 도와야 ν•©λ‹ˆλ‹€.

java final LombokBuilder<Dog> lombokBuilder = LombokBuilder.<Dog>builder().animal(new Dog()).build();

λ‚˜λŠ” 이것이 둬볡 문제라고 μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

#1420κ³Ό 관련이 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμ œλŠ” ν˜•μ‹ μœ μΆ”μ™€ 관련이 μžˆμŠ΅λ‹ˆλ‹€. 그것은 당신이 μƒκ°ν•˜λŠ” κ²ƒλ§ŒνΌ 멀리 가지 μ•ŠμŠ΅λ‹ˆλ‹€. LombokBuilder.builder() ν˜ΈμΆœμ€ 무엇을 μž…λ ₯할지에 λŒ€ν•œ λ‹¨μ„œκ°€ μ—†μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ»΄νŒŒμΌλŸ¬κ°€ μ»΄νŒŒμΌλ˜λ„λ‘ μ•½κ°„ 도와야 ν•©λ‹ˆλ‹€.

java final LombokBuilder<Dog> lombokBuilder = LombokBuilder.<Dog>builder().animal(new Dog()).build();

λ‚˜λŠ” 이것이 둬볡 문제라고 μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@Builder λ₯Ό μ‚¬μš©ν•˜μ—¬ ν΄λž˜μŠ€μ— μ•½κ°„ 덜 κ±΄μ‘°ν•œ ꡬ문을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

public static <T extends Animal> Owner.OwnerBuilder<T> builder(Class<T> cls) { return new Owner.OwnerBuilder<>(); }

_(λͺ…확성을 μœ„ν•΄ 예제 클래슀 이름 LombokBuilder 을 Owner ν–ˆμŠ΅λ‹ˆλ‹€)_

이제 λ‹€μŒκ³Ό 같이 λΉŒλ”λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

// Owner<Dog> owner = Owner.<Dog>builder().animal(new Dog()).build();
Owner<Dog> owner = Owner.builder(Dog.class).animal(new Dog()).build();

μš°μ™€ 거의 λ˜‘κ°™λ„€μš” :/

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰