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를 찾을 수 없다는 컴파일 에러가 발생.