Item 21. Default Method
μΈν°νμ΄μ€λ ꡬννλ μͺ½μ μκ°ν΄ μ€κ³νλΌ.
Java 8λΆν°λ μΈν°νμ΄μ€λ λν΄νΈ λ©μλλ₯Ό ν΅ν΄ ꡬν μ½λλ₯Ό ν¬ν¨ν μ μκ² λμλ€. νμ§λ§ λͺ¨λ λν΄νΈ λ©μλλ€μ΄ ꡬν ν΄λμ€μ λ§€λλ½κ² λμλ κ²μ΄λΌλ 보μ₯μ μκΈ° λλ¬Έμ μ£Όμν΄μ μ¬μ©ν΄μΌ νλ€.
Java 8μμ ν΅μ¬ 컬λ μ
μΈν°νμ΄μ€μ λν΄νΈ λ©μλκ° μΆκ°λμκ³ , μλ° λΌμ΄λΈλ¬λ¦¬μ λν΄νΈ λ©μλλ μ½λ νμ§μ΄ λκ³ μ λμνμ¬ μ’μ μλΌκ³ ν μ μλ€.
νμ§λ§ λͺ¨λ λν΄νΈ λ©μλκ° κ·Έλ μ§ μμλ°, κ·Έ μλ‘λ Collection μΈν°νμ΄μ€μ removeIf λ©μλκ° μλ€.
// Java 8μ Collection μΈν°νμ΄μ€μ removeIf λ©μλ
public interface Collection<E> extends Iterable<E> {
// ...
default boolean removeIf(Predicate<? super E> filter) {
Objects.requireNonNull(filter);
boolean result = false;
for (Iterator<E> it = iterator(); it.hasNext(); ) {
if (filter.test(it.next())) {
it.remove();
result = true;
}
}
return result;
}
}μ μ½λ μμ²΄κ° λ¬Έμ κ° μλ μ½λλ μλμ§λ§, λͺ¨λ Collection ꡬν체μ μ μ©λ μ μλ€.
μλ₯Ό λ€μ΄ μλ° νλ«νΌ λΌμ΄λΈλ¬λ¦¬μμλ μ΄ λ¬Έμ λ₯Ό μλ°©νκΈ° μν΄ μΈν°νμ΄μ€μ λν΄νΈ λ©μλλ₯Ό μ¬μ μνκ³ , λ€λ₯Έ λ©μλμμλ λν΄λ λ©μλλ₯Ό νΈμΆνκΈ° μ μ νμν μμ
μ μννλλ‘ νμ¬ ν΄κ²°νκ³ μλ€.
νμ§λ§ μλ° νλ«νΌμ μνμ§ μμ μλ νν° κΈ°μ‘΄ 컬λ μ
ꡬν체λ€μ λ°λ‘ λμμ νμ§ λͺ»νμ¬ λ¬Έμ κ° λ°μν μ μλ€.(μνμΉμ SynchronizedCollectionμμ λκΈ°ν κ΄λ ¨ λ¬Έμ κ° λ°μνλ€.)
κ²°λ‘
μ΄μ²λΌ λν΄νΈ λ©μλλ κΈ°μ‘΄ ꡬν체μ λ°νμ μ€λ₯λ₯Ό μΌμΌν¬ μ μμΌλ, λν΄νΈ λ©μλλ₯Ό μΆκ°νλ κ²μ κΌ νμν κ²½μ°κ° μλλΌλ©΄ νΌν΄μΌ νλ€. νμ§λ§ μλ‘μ΄ μΈν°νμ΄μ€λ₯Ό μμ±νλ κ²½μ°μ λν΄νΈ λ©μλλ₯Ό ν΅ν΄ νμ€μ μΈ λ©μλ ꡬνμ μ 곡νλ λ° μμ£Ό μ μ©νκΈ° λλ¬Έμ μ₯μ μ λ§λ€.
Last updated
Was this helpful?