item 1 sungjaeyoon - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ»λ μ ν΅μ μΈ λ°©λ²μ public
μμ±μλ€.
νμ§λ§ ν΄λμ€λ μμ±μμ λ³λλ‘ μ μ ν©ν 리 λ©μλλ₯Ό μ 곡ν μ μλ€.
μμ±μλ³΄λ€ μ μ ν©ν 리 λ©μλλ₯Ό μ 곡νλ λ°©μμλ μ₯λ¨μ μ΄ μλ€.
μμ±μμκ² λκΈ°λ 맀κ°λ³μμ μμ±μλ‘λ κ°μ²΄μ νΉμ±μ μ λλ‘ μ€λͺ νμ§ λͺ»νλ€.
BigInteger(int,int,Random) // μμ±μ
BigInteger.probablePrime(int bitLength, Random rnd) //μ μ ν©ν 리 λ©μλ
λ€μ λ μ½λ μ€μμ μ΄λ μͺ½μ΄ "μμμΈ BigInteger μΈμ€ν΄μ€λ₯Ό λ°ννλ€"λ μλ―Έλ₯Ό λ μ μ€λͺ ν κΉ?
λν 맀κ°λ³μμ μμλ₯Ό λ€λ₯΄κ² νμ¬ μμ±μλ₯Ό μΆκ°νλ λ°©μμ μ μ ν©ν 리 λ©μλλ‘ λ°κΎΈκ³ μ°¨μ΄μ μ μ λ€μ΄λ΄μ£Όλ μ΄λ¦μ μ§μ΄μ€λ€λ©΄
κ°λ°μκ° μλ±ν κ²μ νΈμΆνλ μ€μλ₯Ό λ°©μ§ν μ μλ€.
μΈμ€ν΄μ€λ₯Ό 미리 λ§λ€μ΄ λκ±°λ μλ‘ μμ±ν μΈμ€ν΄μ€λ₯Ό μ¬νμ©νλ μμΌλ‘ λΆνμν κ°μ²΄ μμ±μ νΌνλ€.
λνμ μΈ μλ‘ μλ μ½λλ κ°μ²΄λ₯Ό μμ μμ±νμ§ μλλ€.
Boolean.valueOf(boolean)
λ°λΌμ μμ±λΉμ©μ΄ λκ³ μμ£Ό νΈμΆλλ κ°μ²΄λ₯Ό μ μ ν©ν 리 λ©μλλ‘ κ΅¬ννλ€λ©΄ μ±λ₯μ μ¬λ €μ€λ€.
νλΌμ΄μ¨μ΄νΈ ν¨ν΄κ³Ό λΉμ·ν κΈ°λ²μ΄λ€.(νλΌμ΄μ¨μ΄νΈ ν¨ν΄ - κ°μ²΄μ λ΄λΆμμ μ°Έμ‘°νλ κ°μ²΄λ₯Ό μ§μ λ§λλ κ²μ΄ μλλΌ μλ€λ©΄ μμ±νκ³ , λ§λ€μ΄μ Έ μλ€λ©΄ 곡μ νλ μμΌλ‘ κ°μ²΄λ₯Ό ꡬμ±νλ ν¨ν΄)
API λ₯Ό μμ±ν λ, ꡬνν΄λμ€λ₯Ό 곡κ°νμ§ μκ³ λ κ·Έ κ°μ²΄λ₯Ό λ°νν μ μμ΄ API λ₯Ό μκ² μ μ§ν μ μλ€.
μ¦ νλ‘κ·Έλλ¨Έλ λͺ
μν μΈν°νμ΄μ€λλ‘ λμνλ κ°μ²΄λ₯Ό μ»μ κ²μμ μκΈ°μ κ΅³μ΄ λ³λ λ¬Έμλ₯Ό μ°Ύμκ°λ©° ꡬνν΄λμ€κ° λμ§ μμλ³΄μ§ μμλ λλ€.
λ°ν νμ μ νμ νμ μ΄κΈ°λ§ νλ©΄ μ΄λ€ ν΄λμ€μ κ°μ²΄λ₯Ό λ°ννλ μκ΄μλ€. μλ₯Ό λ€μ΄
-
EnumSet
ν΄λμ€λ μμκ° 64κ° μ΄νλ©΄ReqularEnumSet
μ 65κ° μ΄μμ΄λ©΄JumboEnumSe
tμ μΈμ€ν΄μ€λ₯Ό λ°ννλ€.
ν΄λΌμ΄μΈνΈλ ν©ν°λ¦¬κ° 건λ€μ£Όλ κ°μ²΄κ° μ΄λ ν΄λμ€μ μΈμ€ν΄μ€μΈμ§ μ νμκ° μλ€.
λ°ν νλ μΈμ€ν΄μ€κ° EnumSet
μ νμ ν΄λμ€μ΄κΈ°λ§ νλ©΄ λλ κ²μ΄λ€.
λνμ μΈ μλΉμ€ μ 곡μ νλ μμν¬ JDBCκ° μλ€. ν΄λΌμ΄μΈνΈλ μνλ ꡬν체μ 쑰건μ λͺ μ(μλΉμ€ μ κ·Ό API)ν μ μκ³ μ΄λ¬ν 쑰건λ€μ΄ μ μ°ν μ μ ν©ν 리μ μ€μ²΄μ΄λ€.
1. μμμ νλ €λ©΄ publicμ΄λ protected μμ±μκ° νμνλ μ μ ν©ν°λ¦¬ λ©μλλ§ μ 곡νλ©΄ νμ ν΄λμ€λ₯Ό λ§λ€μ μλ€.
μμ μ΄μΌκΈ°ν μΏ¨λμ€λ€μ μμν μ μλ€λ μ΄μΌκΈ°μ΄λ€. μ΄ λ¨μ μ μμλ³΄λ€ μ»΄ν¬μ§μ μ μ¬μ©νλλ‘ μ λνλλ‘ μ₯μ μΌλ‘ λ°μλ€μΌ μλ μλ€.
μ μ ν©ν°λ¦¬ λ©μλλ μΌλ° λ©μλμ΄λ―λ‘ μμ±μμ²λΌ Java docsμ λͺ
νν ννλμ§ μλλ€.
λ°λΌμ μμ±μκ° μμΌλ©΄ μ μ ν©ν°λ¦¬ λ©μλλ₯Ό μ°Ύλ λ±μ κ°λ°μμ λΆνΈν¨μ΄ μκΈ°λ―λ‘ μλ €μ§ κ·μ½μ λ°λΌ μ μ ν©ν°λ¦¬ λ©μλμ λ€μ΄λ°μ νλ μμΌλ‘ λ¬Έμ λ₯Ό μνν΄μ€μΌ νλ€.
from: 맀κ°λ³μλ₯Ό λ°μμ ν΄λΉ νμ μ μΈμ€ν΄μ€λ₯Ό λ°ν
Date date = Date.from(instant);
of: μ¬λ¬ 맀κ°λ³μλ₯Ό λ°μμ μΈμ€ν΄μ€ λ°ν
Set<Rank> cards = EnumSet.of(JACK, QUEEN, KING);
valueOf: fromκ³Ό ofμ λ μμΈν λ²μ
BigInteger prime = BigInteger.valueOf(Integer.MAX_VALUE);
instance / getInstance: μΈμ€ν΄μ€λ₯Ό λ°ννμ§λ§, κ°μ μΈμ€ν΄μ€μμ 보μ₯νμ§ μλλ€.
StackWalker luke = StackWalker.getInstance(options);
create / newInstance: λ§€λ² μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό μμ±ν΄ λ°ννλ€.
Object newArray = Array.newInstance(classObject, arrayLen);
getType: getInstanceμ κ°μΌλ μμ±ν ν΄λμ€κ° μλ λ€λ₯Έ ν΄λμ€μ ν©ν°λ¦¬ λ©μλλ₯Ό μ μν λ μ¬μ©
FileStore fs = Files.getFileStore(path);
newType: newInstanceμ κ°μΌλ μμ±ν ν΄λμ€κ° μλ λ€λ₯Έ ν΄λμ€μ ν©ν°λ¦¬ λ©μλλ₯Ό μ μν λ μ¬μ©
BufferedReader br = Files.newBufferedReader(path);
type: getTypeκ³Ό newTypeμ κ°κ²°ν λ²μ
List<Complaint> litany = Collections.list(someList);
μκ³ λ¦¬μ¦ λ¬Έμ νμ΄μ€ νμκ°μλ€λ©΄ X, Y μ’νλ₯Ό μ€νΈλ§μΌλ‘ λ°μ Pointλ‘ λ³ννλ ν¨μλ₯Ό μμ±μλ‘ μμ±νμ ν λ° μ μ ν©ν°λ¦¬ λ©μλλ‘ κ΅¬νν΄λ³΄μλ€.
μ λ ₯μμ) 1000 500
public Point(int x, int y) {
super();
this.x = x;
this.y = y;
}
public static Point convertStringToPoint(String str) {
String []arr = str.split(" ");
return new Point(Integer.parseInt(arr[0]), Integer.parseInt(arr[1]));
}
Point ν΄λμ€
Point p1 = Point.convertStringToPoint("1000 500");
Point p2 = Point.convertStringToPoint("300 500");
μ μ ν©ν°λ¦¬ λ©μλμ μ₯λ¨μ μ μ΄ν΄νκ³ μ¬μ©νλ κ²μ΄ μ’λ€.
μ μ ν©ν°λ¦¬λ₯Ό μ¬μ©νλκ² μ 리ν κ²½μ°κ° λ§μΌλ―λ‘ λ¬΄μμ public
μμ±μλ₯Ό μ 곡νλ μ΅κ΄μ΄ μλ€λ©΄ κ³ μΉμ.