Amenable
Amenable's Blog
Amenable
  • λΆ„λ₯˜ 전체보기 (189)
    • πŸ“‚ JAVA (87)
      • μ΄νŽ™ν‹°λΈŒ μžλ°” (65)
      • μ£Όμš” κ°œλ… (22)
    • πŸ“‚ 개발 μ„œμ  (22)
      • μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨Έ (1)
      • 객체지ν–₯의 사싀과 μ˜€ν•΄ (2)
      • 클린 μ½”λ“œ (8)
      • ν•¨κ»˜ 자라기 (1)
      • 그림으둜 λ°°μš°λŠ” HTTP&Network Basic (10)
    • πŸ“‚ λ°μ΄ν„°λ² μ΄μŠ€ (8)
      • κ°œλ… (8)
      • λ¬Έμ œν’€μ΄ (0)
    • πŸ“‚ λ„€νŠΈμ›Œν¬ (14)
      • κ°œλ… (6)
      • 성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리 (8)
    • πŸ“‚ μŠ€ν”„λ§ (13)
      • κΈ°λ³Έ κ°œλ… (13)
    • πŸ“‚ WEB (5)
    • πŸ“‚ 자료ꡬ쑰 (12)
      • κ°œλ… (2)
      • μ •λ ¬ (8)
      • 트리 (2)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜ (10)
      • μ΅œμ†Œμ‹ μž₯트리 (2)
      • μ΅œλ‹¨ 경둜 (2)
      • λ¬Έμžμ—΄ (2)
      • ETC (4)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜_λ¬Έμ œν’€μ΄ (4)
      • BOJ_λ°±μ€€ (4)
    • πŸ“‚ ν”„λ‘œκ·Έλž˜λ° (3)
    • πŸ“‚ DevOps (2)
      • 배포 (2)
    • πŸ“‚ ν›„κΈ° (8)
      • μš°μ•„ν•œ ν…Œν¬μ½”μŠ€(ν”„λ¦¬μ½”μŠ€) (4)
      • 2023λ…„ (3)
      • 2024λ…„ (1)
    • πŸ“‚ 회고 (1)
      • 2023λ…„ (1)

λΈ”λ‘œκ·Έ 메뉴

  • πŸš€ GitHub

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
Amenable

Amenable's Blog

null이 μ•„λ‹Œ, 빈 μ»¬λ ‰μ…˜μ΄λ‚˜ 배열을 λ°˜ν™˜ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ54)]
πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”

null이 μ•„λ‹Œ, 빈 μ»¬λ ‰μ…˜μ΄λ‚˜ 배열을 λ°˜ν™˜ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ54)]

2023. 12. 11. 20:22

πŸ“™ 1. null을 λ°˜ν™˜ν•˜λŠ” 경우

  λ§€μž₯ μ•ˆμ˜ 치즈 λͺ©λ‘μ„ λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œλ₯Ό μ‚΄νŽ΄λ³΄μž.

private final List<Cheese> cheeseInStock = ...;

/**
 * @return λ§€μž₯ μ•ˆμ˜ λͺ¨λ“  치즈 λͺ©λ‘μ„ λ°˜ν™˜ν•œλ‹€.
 *      단, μž¬κ³ κ°€ ν•˜λ‚˜λ„ μ—†λ‹€λ©΄ null을 λ°˜ν™˜ν•œλ‹€.
 */
public List<Cheese> getCheeses() {
    return cheeseInStock.isEmpty() ? null
            : new ArrayList<>(cheeseInStock);
}

 

  μ»¬λ ‰μ…˜μ΄λ‚˜ λ°°μ—΄ 같은 μ»¨ν…Œμ΄λ„ˆ(container)κ°€ λΉ„μ—ˆμ„ λ•Œ null을 λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  λ•Œλ©΄ ν•­μ‹œ μ•„λž˜μ™€ 같은 λ°©μ–΄ μ½”λ“œλ₯Ό λ„£μ–΄μ€˜μ•Ό ν•œλ‹€.

List<Cheese> cheeses = shop.getCheese();
if(cheeses != null && cheeses.contains(Cheese.STILTON))
    System.out.println("μ°Ύμ•˜λ‹€ μŠ€ν‹Έν„΄");

  λ³΅μž‘ν•˜λ‹€. 그리고 λ§Œμ•½ null을 μ²˜λ¦¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, NullPointException이 λ°œμƒν•  수 μžˆλ‹€. null을 λ°˜ν™˜ν•˜λŠ” APIλŠ” μ‚¬μš©ν•˜κΈ° μ–΄λ ΅κ³  였λ₯˜ 처리 μ½”λ“œλ„ λŠ˜μ–΄λ‚œλ‹€.

 

  λ•Œλ‘œλŠ” 빈 μ»¨ν…Œμ΄λ„ˆλ₯Ό ν• λ‹Ήν•˜λŠ” 데도 λΉ„μš©μ΄ λ“œλ‹ˆ null을 λ°˜ν™˜ν•˜λŠ” μͺ½μ΄ λ‚«λ‹€λŠ” μ£Όμž₯도 μžˆλ‹€. ν•˜μ§€λ§Œ, μ„±λŠ₯ 뢄석 κ²°κ³Ό 이 할당이 μ„±λŠ₯ μ €ν•˜μ˜ 주범이라고 ν™•μΈλ˜μ§€ μ•ŠλŠ” ν•œ, 이 μ •λ„μ˜ μ„±λŠ₯ μ°¨μ΄λŠ” μ‹ κ²½ μ“Έ μˆ˜μ€€μ΄ λͺ» λœλ‹€. λ˜ν•œ, λΉˆ μ»¬λ ‰μ…˜κ³Ό λ°°μ—΄μ€ κ΅³μ΄ μƒˆλ‘œ ν• λ‹Ήν•˜μ§€ μ•Šκ³ λ„ λ°˜ν™˜ν•  μˆ˜ μžˆλ‹€.

 

πŸ“™ 2. null을 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” 경우

  μœ„μ˜ λ©”μ„œλ“œλŠ” μ•„λž˜μ™€ 같이 λ°”κΏ€ 수 μžˆλ‹€.

// 빈 μ»¬λ ‰μ…˜ λ°˜ν™˜
public List<Cheese> getCheeses() {
    return new ArrayList<>(cheeseInStock);
}

  빈 μ»¬λ ‰μ…˜ 할당이 μ„±λŠ₯을 λˆˆμ— λ„κ²Œ λ–¨μ–΄λœ¨λ¦°λ‹€λ©΄ μ•„λž˜μ™€ 같이 λ°”κΏ€ 수 μžˆλ‹€.

// 빈 μ»¬λ ‰μ…˜μ΄ 맀번 μƒˆλ‘œ ν• λ‹Ήλ˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” 것
public List<Cheese> getCheeses() {
    return cheeseInStock.isEmpty() ? Collections.emptyList()
            : new ArrayList<>(cheeseInStock);
}

 

  배열도 λ§ˆμ°¬κ°€μ§€λ‹€. 

// 길이가 0일 μˆ˜λ„ μžˆλŠ” 배열을 λ°˜ν™˜
public Cheese[] getCheeses() {
    return cheesesInStock.toArray(new Cheese[0]);
}
// 빈 배열을 맀번 μƒˆλ‘œ ν• λ‹Ήν•˜μ§€ μ•Šκ³  λ°˜ν™˜ν•˜λŠ” 방법
private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0];

public Cheese[] getCheeses() {
    return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY);
}

 

 

ν•΄λ‹Ή 글은 Joshua Bloch λ‹˜μ˜ 'Effective Java 3/E'λ₯Ό μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

'πŸ“‚ JAVA > μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

곡개된 APIμš”μ†Œμ—λŠ” 항상 λ¬Έμ„œν™” 주석을 μž‘μ„±ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ56)]  (0) 2023.12.12
μ˜΅μ…”λ„ λ°˜ν™˜μ€ μ‹ μ€‘νžˆ ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ55)]  (0) 2023.12.12
κ°€λ³€μΈμˆ˜λŠ” μ‹ μ€‘νžˆ μ‚¬μš©ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ53)]  (0) 2023.12.11
λ‹€μ€‘μ •μ˜λŠ” μ‹ μ€‘νžˆ μ‚¬μš©ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ52)]  (1) 2023.12.11
λ©”μ„œλ“œ μ‹œκ·Έλ‹ˆμ²˜λ₯Ό μ‹ μ€‘νžˆ μ„€κ³„ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ51)]  (0) 2023.12.10
    'πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • 곡개된 APIμš”μ†Œμ—λŠ” 항상 λ¬Έμ„œν™” 주석을 μž‘μ„±ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ56)]
    • μ˜΅μ…”λ„ λ°˜ν™˜μ€ μ‹ μ€‘νžˆ ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ55)]
    • κ°€λ³€μΈμˆ˜λŠ” μ‹ μ€‘νžˆ μ‚¬μš©ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ53)]
    • λ‹€μ€‘μ •μ˜λŠ” μ‹ μ€‘νžˆ μ‚¬μš©ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ52)]
    Amenable
    Amenable
    CS, μžλ°”, 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜, μŠ€ν”„λ§, μŠ€ν”„λ§ λΆ€νŠΈμ— ν•΄λ‹Ήν•˜λŠ” κ°œλ°œμ— κ΄€ν•œ λ‚΄μš©μ„ κ³΅μœ ν•©λ‹ˆλ‹€.

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”