2014년 7월 31일 목요일

함수형 인터페이스(Functional Interface,@FunctionalInterface),마커인터페이스(Marker Interface),자바8람다식,익명함수,무명메소드

함수형 인터페이스(Functional Interface,@FunctionalInterface),마커인터페이스(Marker Interface),자바8람다식,익명함수,무명메소드

자바에서 마커인터페이스(marker interface)는 구현해야 되는 추상메소드가 없는 인터페이스를 의미한다. 단지 그 인터페이스를 구현했다고 기술한 클래스에 어떤 의미를 부여하기 위한것이다.
그리고 추상메소드가 하나뿐인 인터페이스를 Functional Interface라고 한다.

- java.lang.Runnable 함수형 인터페이스 이다.(void run() 추상메소드 하나 있다.)
- ActionListener interface역시 함수형 인터페이스이다.(actionPerformed() 추상메소드 하나 있다.)
- 이러한 함수형 인터페이스의 인스턴스를 생성하기 위해 익명 클래스등을 주로 사용했지만 람다식을 이용하면 아주 편하다.
- @FunctionalInterface 어노테이션은 JAVA8에서 추가되었으며 함수형 인터페이스 임을 나타낸다.

Runnable 인터페이스의 인스턴스를 람다식을 이용하여 아래처럼 얻을 수 있다.

Runnable r = () -> System.out.println("oraclejava community");

쓰레드를 생성할 때 아래처럼 람다식을 이용할 수도 있다.

new Thread(
    () -> System.out.println("oraclejava community")
).start();


[예제]

package onj;

//@FunctionalInterface
interface OnjInterface2 { 
    public void work(); 
}

public class FInterfaceTest {
static void execute(OnjInterface2 worker) {
worker.work(); 
}
public static void main(String[] args) {
execute(new OnjInterface2() {
@Override
public void work() {
System.out.println("Woking... oraclejava community");
}
});
execute( ()->System.out.println("Woking... oraclejava community"));
}
}



[결과]

Woking... oraclejava community
Woking... oraclejava community



평일주간[100%환급과정]
(8/04)자바기초JDBC,Servlet/JSP까지
(8/04)Spring,MyBatis,Hibernate실무과정
(8/11)C#4.0,WinForm,ADO.NET
(8/11)SQL기초에서 Schema Object까지
(8/11)채용예정교육
(8/18)안드로이드개발자과정
(8/18)PL/SQL,ORACLE HINT,TUNING
평일야간[개인80%환급]
(8/06)JSP,jQUERY,Spring,MyBatis
(8/08)C#,Network,ADO.NET,ASP.NET
(8/11)SQL기초에서실무까지
(8/11)안드로이드개발자과정
(8/12)Spring3.X, MyBatis, Hibernate
(8/13)웹퍼블리싱 마스터
(8/28)자바JSP,jQuery,Spring,MyBatis
주말주간[개인80%환급]
(8/02)Spring3.X, MyBatis, Hibernate
(8/09)SQL기초에서실무까지
(8/09)안드로이드개발자과정
(8/09)자바JSP,Ajax,jQuery,Spring,MyBatis
(8/16)C#,ASP.NET마스터
(8/16)웹퍼블리싱 마스터
(8/23)JAVA,Network&WEB&Framework
주말야간[개인80%환급]
(8/09)SQL기초에서실무까지
(8/23)JAVA,Network&WEB&Framework

댓글 없음:

댓글 쓰기