λ°μ—”μœΌλ‘œ μ„±μž₯쀑 🌱

μš°μ•„ν•œν…Œν¬μ½”μŠ€ 5κΈ° λ°±μ—”λ“œ ν”„λ¦¬μ½”μŠ€

[μš°ν…Œμ½” 5κΈ° ν”„λ¦¬μ½”μŠ€] 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ

써밍 2022. 12. 5. 21:57
πŸ“˜ λͺ©μ°¨ 링크

- 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ
- (μΆ”κ°€ μ˜ˆμ •)

 

λ©°μΉ  κ°„, ν”„λ‘œμ νŠΈλ₯Ό κ΅¬ν˜„ ν•˜λ©΄μ„œ κ³΅λΆ€ν•œ 것듀을 정리해보렀 ν•œλ‹€.

 

ν”„λ¦¬μ½”μŠ€λ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ, 마ꡬ작이둜 클래슀의 μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜μ—¬ 객체λ₯Ό 생성 ν–ˆμ—ˆλ‹€.

 

κ·Έλž˜μ„œ, μ΄λ²ˆμ— 보완해야 ν•  점 쀑 ν•˜λ‚˜λΌκ³  μƒκ°ν–ˆκ³ , 곡뢀λ₯Ό 톡해 μƒμ„±μž λŒ€μ‹  정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό μ μš©ν•˜λŠ” 것이 λͺ©ν‘œμ΄λ‹€.

 


 

정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•œ 흔적...🌠

 

 

정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλž€?

 

객체의 생성을 λ‹΄λ‹Ήν•˜λŠ” 클래슀 λ©”μ„œλ“œλ‘œμ„œ, ν΄λž˜μŠ€μ— 정적 λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜μ—¬ μƒμ„±μž λŒ€μ‹  λ©”μ„œλ“œλ₯Ό 톡해 객체λ₯Ό μƒμ„±ν•˜λŠ” 방식이닀.

 

ꡬ체적으둜 μ„€λͺ…ν•˜λ©΄, μƒμ„±μž → λ‹€λ₯Έ ν΄λž˜μŠ€μ—μ„œ new 방식을 톡해 μƒμ„±ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, 같은 클래슀 λ‚΄μ—μ„œ ν•΄λ‹Ή 클래슀 λͺ…을 μ‚¬μš©ν•˜μ—¬ λ©”μ„œλ“œλ₯Ό λ§Œλ“€μ–΄ 직접 객체λ₯Ό μƒμ„±ν•˜λŠ” 방식이닀.

 

μ•„λž˜μ˜ μ˜ˆμ‹œ μ½”λ“œλ₯Ό 보며 이해 ν•΄λ³΄μž.

 

Car 클래슀λ₯Ό 톡해 new 방식과 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ λ°©μ‹μ˜ 차이λ₯Ό 비ꡐ해 λ³Ό 것 이닀.

 

public class Car {

    private final String name;
    private final int oil;

    public Car(String name, int oil) {
        this.name = name;
        this.oil = oil;
    }
    
    public Car(String name){
        this.name = name;
        this.oil = 0;
    }
}

public static void main(String[] args) {
    Car fullOilCar = new Car("fullOilCar", 10);
    Car noOilCar = new Car("noOilCar");
}

 

μœ„μ— μ½”λ“œλŠ” new 방식을 톡해, main λ©”μ„œλ“œ μ•ˆμ—μ„œ 객체가 μƒμ„±λ˜λŠ” 예제 μ½”λ“œμ΄λ‹€.

new λ°©μ‹μœΌλ‘œ 객체λ₯Ό μƒμ„±ν•˜λ©΄, 각 객체가 μ–΄λ–€ μƒμ„±μžλ₯Ό 톡해 λ§Œλ“€μ–΄ μ§€λŠ”μ§€ μ΄ν•΄ν•˜κΈ° μ–΄λ ΅λ‹€.

 

public class Car {

    private final String name;
    private final int oil;

    public static Car createCar(String name, int oil) {
        return new Car(name, oil);
    }

    public static Car createNoOilCar(String name) {
        return new Car(name, 0);
    }

    private Car(String name, int oil) {
        this.name = name;
        this.oil = oil;
    }
}

public static void main(String[] args) {
    Car fullOilCar = createCar("car1", 10);
    Car noOilCar = createNoOilCar("car2");
}

 

μ΄λ²ˆμ—” 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ 방식이닀.

createCar, createNoOilCar λ©”μ„œλ“œ λ‘˜ λ‹€ ν•΄λ‹Ή 클래슀 이름(Car)을 톡해 Car 객체λ₯Ό λ°˜ν™˜ν•˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.

λ˜ν•œ, main λ©”μ„œλ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄, 각 λ©”μ„œλ“œκ°€ μ–΄λ–€ μƒμ„±μžλ₯Ό 톡해 객체λ₯Ό 생성 ν•˜λŠ”μ§€ μ΄ν•΄ν•˜κΈ° 쉽닀.

 

 

정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ νŠΉμ§•
  • 이름을 κ°€μ§ˆ 수 μžˆλ‹€.
  • ν˜ΈμΆœν•  λ•Œ λ§ˆλ‹€ μƒˆλ‘œμš΄ 객체λ₯Ό 생성할 ν•„μš” μ—†λ‹€. (쀑볡 제거 효과)
  • ν•˜μœ„ μžλ£Œν˜• 객체λ₯Ό λ°˜ν™˜ν•  수 μžˆλ‹€.
  • μž…λ ₯ λ§€κ°œλ³€μˆ˜μ— 따라 맀번 λ‹€λ₯Έ 클래슀의 객체λ₯Ό λ°˜ν™˜ν•  수 μžˆλ‹€.

 

 

정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ λͺ…λͺ… 방식

 

from

 

ν•˜λ‚˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„ ν•΄λ‹Ή νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•˜λŠ” ν˜• λ³€ν™˜ λ©”μ„œλ“œ

Date d = Date.from(instant);

 

of

 

μ—¬λŸ¬ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„ μ ν•©ν•œ νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•˜λŠ” 집계 λ©”μ„œλ“œ

Set<Rank> faceCards = EnumSet.of(JACK, QUEEN, KING);

 

valueOf

 

from, of 의 더 μžμ„Έν•œ 버전

BigInteger prime = BigInteger.valueOf(Integer.MAX_VALUE);

 

instance


getInstance

 

λ§€κ°œλ³€μˆ˜λ‘œ λͺ…μ‹œν•œ μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•˜μ§€λ§Œ, 같은 μΈμŠ€ν„΄μŠ€μž„μ„ 보μž₯ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.

 

StackWalker luke = StackWalker.getInstance(options);

 

create


newInstance

 

instance와 getInstance와 λΉ„μŠ·ν•˜μ§€λ§Œ, 맀번 μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό 생성해 λ°˜ν™˜ν•¨μ„ 보μž₯ν•œλ‹€.

 

Object newArray = Array.newInstance(classObject, arrayLen);

 


[ μš”μ•½ ]

 

μƒμ„±μžλŠ” μˆœμˆ˜ν•˜κ²Œ 객체가 ν•„μš”ν•œ 멀버 λ³€μˆ˜λ§Œ νŒŒλΌλ―Έν„°λ‘œ λ°›μ•„ 객체λ₯Ό μƒμ„±ν•˜λŠ”λ° μ§‘μ€‘ν•˜λ„λ‘ λ§Œλ“€μž.

데이터 νƒ€μž…μ— λ”°λ₯Έ κ°’ 검증 λ“± 데이터에 λŒ€ν•œ μ „μ²˜λ¦¬ μž‘μ—…μ€ λͺ¨λ‘ 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œμ—κ²Œ μœ„μž„ν•˜μž.

이름을 κ°–κ³  μžˆλŠ” λ©”μ„œλ“œλ₯Ό 톡해 객체λ₯Ό μƒμ„±ν•˜μž.

 

 

 

[ 래퍼런슀 ]