week9_incheol_2 - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki
λλ€ & ν΄λ‘μ λ 무μμΈκ°?
λλ€
μ΅λͺ ν΄λμ€λ₯Ό λ κ°λ΅νκ² μ¬μ©ν μ μλλ‘ νμ¬ ν¨μν νλ‘κ·Έλλ°μ ν μ μλλ‘ λμμ£Όλ κΈ°λ₯μ΄λ€.
ν΄λ‘μ
closureλ λ€λ₯Έ ν¨μμ scope λ³μμ μ κ·Όν μ μλ ν¨μλ₯Ό μλ―Ένλ€.
νΉμ΄ν μ μ μΈλΆ ν¨μκ° μ’ λ£ λλλΌλ μ΄ κ°μ΄ μ μ§ λλ€. λμ μΈλΆμ λ³μλ λ³νμ§ μλ final λ³μμ΄μ΄μΌ νλ€. μλ° 7κΉμ§λ λͺ μμ μΌλ‘ finalμ λΆμ¬ μ£Όμμ§λ§ μλ° 8λΆν°λ finalμ λΆμ΄μ§ μμλ λ³κ²½λμ§λ§ μλλ€λ©΄ κ²½κ³ λ¬Έκ΅¬λ₯Ό 보λ΄μ£Όμ§ μλλ€.
private String someVariable = "9000";
public void anonymousClosure() {
String someVariable = "1000";
Function<String, Integer> function = new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return Integer.parseInt(ClosureExample.this.someVariable);
}
};
}
public void lambdaClosure() {
String someVariable = "1000";
Function<String,Integer> function = i -> Integer.parseInt(this.someVariable);
}
λλ€μ κ²½μ°μλ νΈμΆν ν΄λμ€μ μ κ·Όμ΄ κ°λ₯νμ§λ§ μ΅λͺ ν΄λμ€λ μ΅λͺ ν΄λμ€λ΄μμλ§ μ κ·Όμ΄ κ°λ₯νλ€. μ΄κ² anonymous ν΄λμ€μ lambdaμ μ°¨μ΄μ μ΄λΌκ³ ν μ μκ² λ€.
public void anonymousClosure() {
Function<String, Integer> function = new Function<String, Integer>() {
@Override
public Integer apply(String s) {
System.out.println(toString("toString")); // μ»΄νμΌ μλ¬!!!!
return null;
}
};
}
public void lambdaClosure() {
Function<String,Integer> function = i -> {
System.out.println(toString("toString"));
return null;
};
}
public String toString(String str){
return str;
}