2016-07-01 4 views
1

를 참조합니다. 1 CarUtils 클래스의 getCarColor 메소드가 Function 인터페이스에 apply 메소드와 동일한 메소드 서명 및 리턴 유형을 가지고 있기 때문에 1이 작동합니다.이해 방법은 나는 다음과 같은 예를

하지만 Ex. 2 작품? 방법 getColorCar 클래스가 apply 메소드 서명과 다르며 여기서 컴파일 시간 오류가 발생할 것으로 예상됩니다.

+3

'getColor' 메서드는 메서드에 전달되는 암시 적'this' 매개 변수를 가진 것으로 생각할 수 있습니다. 일부 언어는이를 명확하게 해줍니다. 그래서 당신은 기본적으로'Car'의 인스턴스를 취하고'String'을 반환하는 함수를 가지고 있습니다. –

답변

2

자동차 클래스의 getColor 메소드는 메소드 서명과 다르고 여기에 컴파일 시간 오류가 발생할 것으로 예상됩니다.

아니요. Car.getColor()은 인스턴스 메소드입니다. 이 함수를 하나의 인수, 즉 Car 유형의 this을 사용하는 함수로 볼 수 있으며 문자열을 반환합니다. 그래서 이것은 Function<Car, String>에서 apply()의 서명과 일치합니다.

+0

두 개의 인수를 취하는 인스턴스 메소드가 있다고 가정 해 보겠습니다. 실제로 세 개의 인수가 있고 첫 번째 인수는 메소드가 속한 인스턴스가됩니까? – user1745356

+3

여러 개의 매개 변수가있는 경우 첫 번째 매개 변수는 항상 클래스 인스턴스가됩니다. –