IT개발/Java
[Java, OCJA] QUESTION 84, What is the result?
Thompson
2025. 1. 27. 22:40
728x90
반응형
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
static int a1;
public static void doProduct(Integer a){
a1 = a * a;
}
public static void doString(StringBuilder s) {
s.append(" " + s);
}
public static void main(String[] args) {
String [] arr = {"Hi", "How", "Are", "You"};
List<String> arrList = new ArrayList<>(Arrays.asList(arr));
if (arrList.removeIf((String s) -> {return s.length() <= 2;})) {
System.out.println(s + "removed");
}
}
}
문제 원인
s 변수는 System.out.println 문 안에서 사용되고 있지만, 해당 범위에서 정의되지 않음.
s 는 람다식 안에서만 유효한 지역 변수로 선언.
따라서, System.out.println(s + "removed");에서 s를 찾을 수 없다는 컴파일 에러가 발생.