item 16 Jung inchul - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
Effective Java 3e μμ΄ν 16λ₯Ό μμ½ν λ΄μ© μ λλ€.
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ¨Έλ νλ λ€μ λͺ¨λ privateμΌλ‘ λ°κΎΈκ³ public μ κ·Όμ(getter)λ₯Ό μΆκ°νλ€.
class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() { return x; }
public double getY() { return y; }
public void setX(double x) { this.x = x; }
public void setY(double y) { this.y = y; }
}
public ν΄λμ€λΌλ©΄ μ΄ λ°©μμ΄ λ§λ€. ν¨ν€μ§ λ°κΉ₯μμ μ κ·Όν μ μλ ν΄λμ€λΌλ©΄ μ κ·Όμλ₯Ό μ 곡ν¨μΌλ‘μ¨ ν΄λμ€ λ΄λΆ νν λ°©μμ μΈμ λ λ°κΏ μ μλ μ μ°μ±μ μ»μ μ μλ€.
Q. μΊ‘μνμ λν΄μ μ΄λ»κ² μκ°νλ? A. λλ―Έν°μ λ²μΉ, 묻μ§λ§κ³ μμΌλΌ
νμ§λ§ package-private ν΄λμ€ νΉμ private μ€μ²© ν΄λμ€λΌλ©΄ λ°μ΄ν° νλλ₯Ό λ ΈμΆνλ€ ν΄λ νλ±μ λ¬Έμ κ° μλ€. private μ€μ²© ν΄λμ€μ κ²½μ°λΌλ©΄ μμ λ²μκ° λ μ’μμ Έμ μ΄ ν΄λμ€λ₯Ό ν¬ν¨νλ μΈλΆ ν΄λμ€κΉμ§λ‘ μ νλλ€.
μλ° νλ«νΌ λΌμ΄λΈλ¬λ¦¬μλ public ν΄λμ€μ νλλ₯Ό μ§μ λ ΈμΆνμ§ λ§λΌλ κ·μΉμ μ΄κΈ°λ μ¬λ‘κ° μ’ μ’ μλ€. λνμ μΈ μκ° java.awt.package ν¨ν€μ§μ Pointμ Dimension ν΄λμ€λ€.
public ν΄λμ€μ νλκ° λΆλ³μ΄λΌλ©΄ μ§μ λ ΈμΆν λμ λ¨μ μ΄ μ‘°κΈμ μ€μ΄λ€μ§λ§, μ¬μ ν κ²°μ½ μ’μ μκ°μ΄ μλλ€. λ¨, λΆλ³μμ 보μ₯ν μ μκ² λλ€.
public final class Time {
private static final int HOURS_PER_DAY = 24;
private static final int MINUTES_PER_HOUR = 60;
public final int hour;
public final int minute;
public Time(int hour, int minute) {
if (hour < 0 || hour >= HOURS_PER_DAY)
throw new IllegalArgumentException("μκ° : " + hour);
if (minute < 0 || minute >= MINUTES_PER_HOUR)
throw new IllegalArgumentException("λΆ : " + minute);
this.hour = hour;
this.minute = minute;
}
...
}
μ 리
public ν΄λμ€λ μ λ κ°λ³ νλλ₯Ό μ§μ λ ΈμΆν΄μλ μ λλ€. λΆλ³ νλλΌλ©΄ λ ΈμΆν΄λ λ μννμ§λ§ μμ ν μμ¬ν μλ μλ€. νμ§λ§ package-private ν΄λμ€λ private μ€μ²© ν΄λμ€μμλ μ’ μ’ (λΆλ³μ΄λ κ°λ³μ΄λ ) νλλ₯Ό λ ΈμΆνλ νΈμ΄ λμ λλ μλ€.