JShell에서 선언 된 메서드가 두포에서 어떻게 구현되는지 궁금합니다.JShell에서 선언 된 메서드는 lambdas입니까?
예 :
int add(int x,int y){
return x+y;
}
는
BiFunction의 선언 방법 인스턴스 위에? 어리석은 질문 일지 모르지만 다만 호기심을 위해.
JShell에서 선언 된 메서드가 두포에서 어떻게 구현되는지 궁금합니다.JShell에서 선언 된 메서드는 lambdas입니까?
예 :
int add(int x,int y){
return x+y;
}
는
BiFunction의 선언 방법 인스턴스 위에? 어리석은 질문 일지 모르지만 다만 호기심을 위해.
평범한 일반적인 방법입니다. BiFunction
으로 생성되는 이유는 무엇입니까? 물론 말하지 않는 한.
이 메서드 (또는 다른 모든 상태)를 보유하는 jdk.jshell.JShell
이라는 최상위 클래스가 있습니다. 이 작동하지 않을
jshell> int add(int x, int y) { return x + y; }
의미 :하지만 당신은 방법 참조를 선언하는 데 사용할 수 없습니다
jshell> BiFunction<Integer, Integer> by = JShell::add; // or this::add
당신은 것 래핑하는 클래스에서 add
방법 :
jshell> class Foo { static int add(int x, int y) { return x + y; } ...
다음 할당하십시오 :
jshell> BiFunction<Integer, Integer, Integer> bi = Foo::add;
bi ==> $Lambda$15/[email protected]
그저 ['MethodSnippet'] (https://docs.oracle.com/javase/9/docs/api/jdk/jshell/MethodSnippet.html)과 JShell은 주로 ['Snippet']에 의존하기 때문에 https://docs.oracle.com/javase/9/docs/api/jdk/jshell/Snippet.html) 및 해당 평가. 나는 당신이 그것의 타입/서브 클래스를 읽도록 강요 할 것이다. 아마 그 질문은 JShell이 스 니펫을 평가하는 방법으로 바뀌지 않기를 바랍니다. – nullpointer