자바 상용 함수 식 인터페이스 - Supplier 인터페이스
1. 인터페이스 개요
Supplier 인터페이스의 소스 코드 는 비교적 간단 하고 방법 은 하나 밖 에 없다.
@FunctionalInterface
public interface Supplier {
/**
* Gets a result.
*
* @return a result
*/
T get();
}
get 방법 은 인자 가 없 지만 반환 값 이 있 습 니 다. 이 반환 값 은 일반적인 매개 변수 가 지정 한 형식 입 니 다.이 방법 은 지정 한 형식의 대상 을 만 드 는 데 사 용 됩 니 다.
2. 사용 방식
Supplier 인 터 페 이 스 를 사용 하기 전에 우 리 는 먼저 이러한 장면 을 보 았 다. 어 딘 가 에서 대상 을 얻 으 려 고 시도 하고 얻 지 못 하면 우 리 는 스스로 기본 적 인 대상 을 만 들 었 다.
우 리 는 먼저 대상 Person 을 정의 합 니 다.
public class Person {
private final String name;
private final Integer age;
public Person(String name, Integer age){
this.name = name;
this.age = age;
}
}
현재 테스트: getPerson 방법 은 name 을 통 해 목록 에서 Person 대상 을 찾 습 니 다. 찾 으 면 되 돌아 갑 니 다. null 로 돌아 가 는 것 을 찾 지 못 했 습 니 다. main 방법 에서 이 방법 을 호출 하고 결과 가 비어 있다 고 판단 할 때 기본 Person 대상 을 만 든 다음 에 뒤의 논 리 를 이 어 갑 니 다.
public class SupplierTest {
private static List personList = new ArrayList() {
{
add(new Person("lisi", 20));
add(new Person("zhangsan", 23));
}
};
public static void main(String[] args) {
String name = "wangwu";
Person person = getPerson(name);
if (person == null) {
person = new Person(name, 10);
}
//后续处理
System.out.println(person);
}
public static Person getPerson(String name) {
for (Person person : personList) {
if (person.getName().equals(name)) {
return person;
}
}
return null;
}
}
위의 이런 표기 법 은 문 제 를 해결 할 수 있 지만 지금 은 Supplier 간략화 코드 를 사용 할 수 있다.
public class SupplierTest {
private static List personList = new ArrayList() {
{
add(new Person("lisi", 20));
add(new Person("zhangsan", 23));
}
};
public static void main(String[] args) {
String name = "wangwu";
Person person = getPerson(name, () -> new Person(name, 10));
//后续处理
System.out.println(person);
}
public static Person getPerson(String name, Supplier supplier) {
return personList.stream()
.filter(e -> e.getName().equals(name))
.findAny()
.orElse(supplier.get());
}
}
여기 서 우 리 는
getPerson
방법 에 인자 Supplier supplier
를 추 가 했 습 니 다. 찾 아야 할 대상 을 얻 지 못 했 을 때 호출 자가 제공 한 Supplier 가 기본 대상 을 만 듭 니 다.그러면 우리 가 main 방법 에서 getPerson
을 호출 할 때 빈 판단 을 하지 않 아 도 되 고 코드 도 비교적 명확 하고 간단 하 다.Person person = getPerson(name, () -> new Person(name, 10));
이런 모델 은 매우 직관 적 으로 보이 기 때문에 이런 장면 에 대해 사용 을 장려 해 야 한다.getPerson 의 첫 번 째 매개 변 수 는 name 입 니 다. 이 name 값 을 사용 하여 Person 대상 을 찾 으 면 사용 합 니 다. 빈 것 으로 찾 으 면 기본 Person 인 스 턴 스, 즉 위의 Lambda 표현 식 내용 을 만 듭 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.