Item 49. Parameter Validation
λ§€κ°λ³μκ° μ ν¨νμ§ κ²μ¬νλΌ
λ©μλμ μμ±μμ λ§€κ°λ³μλ νΉμ μ‘°κ±΄μ΄ λ§μ‘±λλ κ°λ§ λ€μ΄μ€λλ‘ κΈ°λνμ§λ§, κ²μ¬λ₯Ό μ λλ‘ μννμ§ μμΌλ©΄ μλ¬κ° λ°μνκ±°λ μμ μλͺ»λ κ²°κ³Όλ₯Ό λ°νν μ μλ€. λλ¬Έμ publicμ΄λ protected λ©μλμλ μ΄λ€ μ μ½μ΄ μμμ§ μκ°νκ³ λ§€κ°λ³μ κ°μ΄ μλͺ»λμ λ λμ§λ μμΈλ₯Ό λ¬Έμνν΄μΌ νλ€.
// java.math.BigInteger
/**
* ...
* <p>All methods and constructors in this class throw
* {@code NullPointerException} when passed
* a null object reference for any input parameter.
* ...
*/
public class BigInteger extends Number implements Comparable<BigInteger> {
// ...
/**
* (νμ¬ κ° mod m) κ°μ λ°ννλ€. μ΄ λ©μλλ
* νμ μμ΄ μλ BigIntegerλ₯Ό λ°ννλ€λ μ μμ remainder λ©μλμ λ€λ₯΄λ€.
*
* @param m κ³μ(μμμ¬μΌ νλ€.)
* @return νμ¬ κ° mod m
* @throws ArithmeticException mμ΄ 0λ³΄λ€ μκ±°λ κ°μΌλ©΄ λ°μνλ€.
*/
public BigInteger mod(BigInteger m) {
if (m.signum() <= 0) {
throw new ArithmeticException("κ³μ(m)λ μμμ¬μΌ ν©λλ€. " + m);
}
BigInteger result = this.remainder(m);
return (result.signum >= 0 ? result : result.add(m));
}
// ...
}
μ μ½λλ BigInteger ν΄λμ€μ mod λ©μλμ μ ν¨μ± κ²μ¬ λ¬Έμν μμμ΄λ€. BigInteger ν΄λμ€ μμ€μμ input parameterκ° nullμΈ κ²½μ°μ λν΄ λ¬Έμνκ° λμ΄ μκΈ° λλ¬Έμ mod λ©μλμμλ μ€λͺ μ΄ μλ΅λμλ€. (ν΄λμ€ μμ€μ μ£Όμμ ν΄λΉ ν΄λμ€μ λͺ¨λ publicμ μ μ©λλ―λ‘, λ©μλ μμ€μμ μ€λ³΅ν΄μ μμ±ν νμκ° μλ€.)
λ§€κ°λ³μ μ ν¨μ± κ²μ¬μ μ€μμ±
λ§€κ°λ³μλ‘ λ°μ κ°μ ν΄λΉ λ©μλμμ μ§μ μ¬μ©νλ©΄ μλ¬ λ°μ μ μμΈμ μ°Ύλ κ²μ΄ μ½μ§λ§, κ·Έλ μ§ μμ κ²½μ°μλ λ§€κ°λ³μ μ ν¨μ± κ²μ¬κ° λμ± μ€μν΄μ§λ€. μλ₯Ό λ€μ΄ μ§μ μ¬μ©νμ§ μκ³ λμ€μ μ°κΈ° μν΄ μ μ₯νλ κ²½μ°μ, μλμ μλ리μ€μ κ°μ΄ μλ¬κ° λ°μνκ² λλ©΄μ μμΈμ μ°ΎκΈ°κ° μ΄λ €μμ§λ€.
λ©μλλ₯Ό ν΅ν΄ κ°μ²΄ νλμ nullμ μ μ₯(λΉμ μμ μΈ μν)
μμμ μμ μ νλμ μ μ₯λ nullμ λ°ννκ±°λ μ¬μ©νλ λ©μλ νΈμΆ
NullPointerException λ°μνλ©΄μ μ΄λ μμ μ nullμ΄ μ μ₯λμλμ§ μΆμ νκΈ° μ΄λ €μ
λ§€κ°λ³μ μ ν¨μ± κ²μ¬κ° μλ΅λλ κ²½μ°
무쑰건 μ μΌλ‘ λ§€κ°λ³μ μ ν¨μ± κ²μ¬λ₯Ό μνν΄μΌ νλ κ²μ μλλ°, μλμ κ²½μ°μλ μλ΅ν΄λ λλ€.
μ ν¨μ± κ²μ¬ λΉμ©μ΄ μ§λμΉκ² λκ±°λ μ€μ©μ μ΄μ§ μμ κ²½μ°
κ³μ° κ³Όμ μμ μ묡μ μΌλ‘ κ²μ¬κ° μνλλ κ²½μ°
Collections.sort(List)
: μνΈ λΉκ΅λ μ μλ νμ μ κ°μ²΄κ° λ€μ΄κ°λ©΄ClassCastException
μ΄ λ°μνμ¬, κ΅³μ΄ μ ν¨μ± κ²μ¬λ₯Ό μννμ§ μμλ λλ€.νμ§λ§ μ묡μ μ ν¨μ± κ²μ¬μ λ무 μμ‘΄νκ²λλ©΄ μ€ν¨ μμμ±μ ν΄μΉ μ μμΌλ μ£Όμν΄μΌ νλ€.
Last updated
Was this helpful?