> Java > java지도 시간 > 본문

Java8의 함수 참조 사용 소개

黄舟
풀어 주다: 2017-09-19 10:27:02
원래의
1565명이 탐색했습니다.

이 글은 주로 Java8 학습 튜토리얼에서 함수 참조의 사용을 소개합니다. 이 글은 샘플 코드를 통해 아주 자세하게 소개하고 있습니다. 필요한 모든 사람의 학습이나 참조를 위해 아래 편집기를 따르세요. 와서 함께 공부하세요.

서문

이전 기사에서는 예제를 사용하여 람다 식을 정의하고 사용하는 방법과 다른 언어와 비교한 Java의 람다 식의 특수 사양을 설명했습니다. 그리고 람다 표현식은 함수 참조로 더욱 단순화될 수 있습니다.

이번 글에서는 함수 레퍼런스 사용법을 소개하겠습니다. 말할 것도 없이 자세한 소개를 살펴보겠습니다.

함수 참조 유형

함수 참조는 다음 네 가지 유형으로 나뉩니다.

  • 정적 함수(예: Integer 클래스의 parseInt 함수)는 Integer로 작성할 수 있습니다. :parseIntInteger::parseInt

  • 对象级别函数的引用,比如 String 类的 length 函数,可以写作 String::length

  • 具体实例的函数的引用,比如名称为 expensiveTransaction 的一个实例的 getValue,写作 expensiveTransaction::getValue

  • String 클래스의 길이 함수와 같은 객체 수준 함수에 대한 참조는 String::length

다음과 같이 작성할 수 있습니다. 비싼Transaction이라는 인스턴스의 getValue와 같은 특정 인스턴스, expensiveTransaction::getValue

생성자 참조


정적 함수

예:

Function<String, Integer> stringToInteger = (String s) -> Integer.parseInt(s);
로그인 후 복사
작성 쓸 수 있음:

Function<String, Integer> stringToInteger = Integer::parseInt;
로그인 후 복사

객체 수준 함수에 대한 참조


BiPredicate<List<String>, String> contains =
(list, element) -> list.contains(element);
로그인 후 복사
는 다음과 같이 쓸 수 있습니다.

BiPredicate<List<String>, String> contains = List::contains;
로그인 후 복사


생성자


다음은 생성자의 또 다른 예입니다. 먼저 기능적 인터페이스를 정의합니다. get 메소드는 지정된 유형의 객체를 반환합니다.

@FunctionalInterface
public interface Supplier<T> {
 T get();
}
로그인 후 복사


Supplier<TantanitReader> constructor = () -> new TantanitReader();
TantanitReader tantanitReader = constructor.get();
로그인 후 복사

위 코드의 람다 식 new는 새 개체를 반환하여 생성자 변수를 생성자에 대한 참조로 만듭니다.

는 다음 함수 참조와 동일합니다.


Supplier<TantanitReader> constructor2 = TantanitReader::new;
TantanitReader tantanitReader2 = constructor2.get();
로그인 후 복사

위의 예는 모두 매개변수가 없습니다. 다음은 매개변수가 있는 경우를 소개하기 위해 생성자를 예로 사용합니다.


public TantanitReader(String loginName) {
 this.loginName = loginName;
}
로그인 후 복사

Function<String,TantanitReader> constructor3 = (loginName) -> new TantanitReader(loginName);
TantanitReader tantanitReader3 = constructor3.apply("jack");

Function<String,TantanitReader> constructor4 = TantanitReader::new;
TantanitReader tantanitReader4 = constructor4.apply("jack");
TantanitReader tantanitReader5 = constructor4.apply("tom");
로그인 후 복사

이 함수에는 매개변수가 하나뿐이므로 Java에 포함된 Function 인터페이스를 사용할 수 있습니다. 실제로 작동하는 함수는 다음과 같습니다.

R apply(T t);
로그인 후 복사

함수는 하나의 매개변수를 기반으로 결과를 반환하는 것입니다. 여기에서 constructor4와 해당 함수 참조 constructor5를 사용할 수 있습니다.

요약

함수 참조를 사용하면 람다 표현식을 단순화할 수 있을 뿐만 아니라 의미론적으로 메서드 이름, 즉 수행할 작업에 더 집중할 수 있으며 추상화 수준은 인간의 인지 수준에 더 가깝습니다. 따라서 가능하면 함수 참조를 사용해야 합니다. 🎜🎜🎜🎜요약🎜🎜🎜

위 내용은 Java8의 함수 참조 사용 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!