2017-11-06 18 views
3

JShell에서 선언 된 메서드가 두포에서 어떻게 구현되는지 궁금합니다.JShell에서 선언 된 메서드는 lambdas입니까?

예 :

int add(int x,int y){ 
return x+y; 
} 

BiFunction의 선언 방법 인스턴스 위에? 어리석은 질문 일지 모르지만 다만 호기심을 위해.

+2

그저 ['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

답변

3

평범한 일반적인 방법입니다. 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] 
+0

어디서 jdk.jshell.Jshell 클래스에 대한 세부 정보를 얻을 수 있습니까? – optional

+2

@Mukeshkumarsaini 당신이 인터넷 검색을 시도 했습니까? 진지하게, 처음 10 번의 검색을하면 이것에 대한 매우 큰 그림이 생깁니다. – Eugene

+1

https://docs.oracle.com/javase/9/docs/api/jdk/jshell/package-summary.html 감사합니다. – optional