class Foo { private fun getObject1() = object { val x = 1 } fun useObject1() = getObject1().x // getObject1이 private이라 x에 접근가능 fun getObject2() = object { val x = 2 } fun useObject2() = getObject2().x // getObject2가 public이라 x에 접근불가 => 컴파일 에러 }


프라이빗 메소드가 뱉어낸 익명 객체의 프로퍼티에는 자유롭게 접근 가능한데

프라이빗이 아닌 메소드가 뱉어냈을 경우에는 아니네

클래스 안에서만 쓸거면 편하게 풀어줄게..라는 의도는 알겠는데

메소드 접근 권한이 좁아질 때 리턴값 내부에 대한 접근 권한이 넓어진다는게 뭔가 뭔가 그럼..