item 49 Jung inchul - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
Effective Java 3e μμ΄ν 49λ₯Ό μμ½ν λ΄μ© μ λλ€.
λ©μλ
μ μμ±μ
λλΆλΆμ μ
λ ₯ 맀κ°λ³μμ κ°μ΄ νΉμ 쑰건μ λ§μ‘±νκΈ°λ₯Ό λ°λλ€. μ΄λ "μ€λ₯λ κ°λ₯ν ν 빨리 (λ°μν κ³³μμ) μ‘μμΌ νλ€
"λ μΌλ° μμΉμ ν μ¬λ‘μ΄κΈ°λ νλ€. μ€λ₯λ₯Ό λ°μν μ¦μ μ‘μ§ λͺ»νλ©΄ ν΄λΉ μ€λ₯λ₯Ό κ°μ§νκΈ° μ΄λ €μμ§κ³ , κ°μ§νλλΌλ μ€λ₯μ λ°μ μ§μ μ μ°ΎκΈ° μ΄λ €μμ§λ€.
- λ©μλκ° μνλλ μ€κ°μ λͺ¨νΈν μμΈλ₯Ό λμ§λ©° μ€ν¨ν μ μλ€.
- λ λμ μν©μ λ©μλκ° μ μνλμ§λ§ μλͺ»λ κ²°κ³Όλ₯Ό λ°νν λλ€
- νμΈ΅ λ λμ μν©μ λ©μλλ λ¬Έμ μμ΄ μνλμ§λ§, μ΄λ€ κ°μ²΄λ₯Ό μ΄μν μνλ‘ λ§λ€μ΄λμμ λ―Έλμ μ μ μλ μμ μ μ΄ λ©μλμλ κ΄λ ¨ μλ μ€λ₯λ₯Ό λΌ λλ€.
public
κ³Ό protected
λ©μλλ 맀κ°λ³μ κ°μ΄ μλͺ»λμ λ λμ§λ μμΈλ₯Ό λ¬Έμνν΄μΌ νλ€.(@throws
μλ°λ
νκ·Έλ₯Ό μ¬μ©νλ©΄ λλ€) μλ° 7μ μΆκ°λ java.util.Objects.requireNonNull
λ©μλλ μ μ°νκ³ μ¬μ©νκΈ°λ νΈνλ, λ μ΄μ null
κ²μ¬λ₯Ό μλμΌλ‘ νμ§ μμλ λλ€.
this.strategy = Objects.requiredNonNull(strategy, "μ λ΅");
μλ° 9μμλ Objects
μ λ²μ κ²μ¬ κΈ°λ₯λ λν΄μ‘λ€. checkFromIndexSize
, chechFromToIndex
, checkIndex
λΌλ λ©μλλ€μΈλ°, null κ²μ¬ λ©μλλ§νΌ μ μ°νμ§λ μλ€.
public
μ΄ μλ λ©μλλΌλ©΄ λ¨μΈλ¬Έ(assert
)μ μ¬μ©ν΄ 맀κ°λ³μ μ ν¨μ±μ κ²μ¦ν μ μλ€.
private static void sort(long a[], int offset, int length) {
assert a != null;
assert offset >= 0 && offset <= a.length;
assert length >= 0 && length <= a.length = offset;
... // κ³μ° μν
}
- μ€ν¨νλ©΄
AssertionError
λ₯Ό λμ§λ€. - λ°νμμ μλ¬΄λ° ν¨κ³Όλ, μ±λ₯ μ νλ μλ€. (λ¨, javaλ₯Ό μ€νν λ λͺ
λ Ήμ€μμ -ea νΉμ β
enableassertions
νλκ·Έ μ€μ νλ©΄ λ°νμμ μν₯μ μ€λ€)
μμ±μ 맀κ°λ³μμ μ ν¨μ± κ²μ¬λ ν΄λμ€ λΆλ³μμ μ΄κΈ°λ κ°μ²΄κ° λ§λ€μ΄μ§μ§ μκ² νλ κ² κΌ νμνλ€.
public class Person
public Person(String name, Integer age) {
Validate.notNull(name, "name can't be null");
Validate.notNull(age, "age can't be null");
...
}
}
μ ν¨μ± κ²μ¬ λΉμ©μ΄ μ§λμΉκ² λκ±°λ μ€μ©μ μ΄μ§ μμ λ, νΉμ κ³μ° κ³Όμ μμ μ묡μ μΌλ‘ κ²μ¬κ° μνλ λλ€. μλ₯Ό λ€μ΄ Collections.sort(List)
μ²λΌ κ°μ²΄ 리μ€νΈλ₯Ό μ λ ¬νλ λ©μλμ κ²½μ° μνΈ λΉκ΅λ μ μλ νμ
μ κ°μ²΄κ° λ€μ΄ μλ€λ©΄ κ·Έ κ°μ²΄μ λΉκ΅ν λ ClassCastException
μ λμ§ κ²μ΄λ€. λ°λΌμ λΉκ΅νκΈ° μμ 리μ€νΈ μμ λͺ¨λ κ°μ²΄κ° μνΈ λΉκ΅λ μ μλμ§ κ²μ¬ν΄λ΄μΌ λ³λ€λ₯Έ μ€μ΅μ΄ μλ€.
public class Collectionsorting
{
public static void main(String[] args)
{
// Create a list of strings
ArrayList<String> al = new ArrayList<String>();
al.add("Geeks For Geeks");
al.add("Friends");
al.add("Dear");
al.add("Is");
al.add("Superb");
/* Collections.sort method is sorting the
elements of ArrayList in ascending order. */
Collections.sort(al);
// Let us print the sorted list
System.out.println("List after the use of" +
" Collection.sort() :\n" + al);
}
}
μ΄λ² μμ΄ν
μ "맀κ°λ³μμ μ μ½μ λλ κ² μ’λ€
"κ³ ν΄μν΄μλ μλλ€. μ¬μ€μ κ·Έ λ°λλ€. λ©μλλ μ΅λν λ²μ©μ μΌλ‘ μ€κ³ν΄μΌ νλ€. λ©μλκ° κ±΄λ€λ°μ κ°μΌλ‘ 무μΈκ° μ λλ‘ λ μΌμ ν μ μλ€λ©΄ 맀κ°λ³μ μ μ½μ μ μμλ‘ μ’λ€. νμ§λ§ ꡬννλ €λ κ°λ
μμ²΄κ° νΉμ ν μ μ½μ λ΄μ¬ν κ²½μ°λ λλ¬Όμ§ μλ€.
λ©μλλ μμ±μλ₯Ό μμ±ν λλ©΄ κ·Έ 맀κ°λ³μλ€μ μ΄λ€ μ μ½μ΄ μμμ§ μκ°ν΄μΌ νλ€. κ·Έ μ μ½λ€μ λ¬Έμννκ³ λ©μλ μ½λ μμ λΆλΆμμ λͺ μμ μΌλ‘ κ²μ¬ν΄μΌ νλ€. μ΄λ° μ΅κ΄μ λ°λμ κΈ°λ₯΄λλ‘ νμ. κ·Έ λ Έλ ₯μ μ ν¨μ± κ²μ¬κ° μ€μ μ€λ₯λ₯Ό μ²μ κ±Έλ¬λΌ λ μΆ©λΆν 보μλ°μ κ²μ΄λ€.