java8의 lambda 표현식 (방법 인용)
button.setOnAction(event -> System.out.println(event));
만약 당신이 println 방법만 setOnaction 방법에 전달할 수 있다면 더욱 좋습니다!다음은 수정된 코드입니다.
button.setOnAction(System.out::println);
표현식 System.out::println은 방법 인용으로 lambda 표현식과 같습니다.
x -> System.out.println(x)
예시 코드와 같이 조작부호는 방법명과 대상이나 클래스의 이름을 분리합니다.다음과 같은 세 가지 주요 사용 사례가 있습니다.
주의: 같은 이름의 재부팅 방법이 여러 개 있다면 컴파일러는 상하문에서 가장 일치하는 방법을 찾으려고 시도할 것입니다.예를 들어, 두 가지 버전의 Math가 있습니다.max 방법, 하나의 수신 정형은 매개 변수이고, 다른 수신 더블 형식의 값은 매개 변수입니다.도대체 어떤 방법을 선택할지는Math::max가 변환된 함수식 인터페이스의 방법 매개 변수에 달려 있습니다.lambda 표현식과 유사하고 방법 인용도 독립적으로 존재하지 않으며 함수식 인터페이스로 변환되는 실례에 자주 사용된다.
너는 또한 방법 인용 중의this 파라미터를 포획할 수 있다.예를 들어this::equals는 x->this와 같다.equals(x).너도 슈퍼 대상을 사용할 수 있다. 예를 들어 슈퍼::실례적인 방법이다.예:
package java8;
public class J2 {
public static void main(String[] args) {
Greeter g = new ConcurrentGreeter();
g.greet();
}
}
class Greeter {
public void greet(){
System.out.println("Hello world!");
}
}
class ConcurrentGreeter extends Greeter{
@Override
public void greet() {
//super ,
Thread t = new Thread(super::greet);
t.start();
}
}
package java8;
public class J3 {
public static void main(String[] args) {
Greeter1 g = new Greeter1();
g.greet();
}
}
class Greeter1 {
public void greet() {
//this ,
Thread t = new Thread(this::printInfo);
t.start();
}
public void printInfo(){
System.out.println("test success!!");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.