01 익명 객체(Anonymous Object)
ex) 익명 객체 구현 방식
package com.lambda;
interface Sample{ // 인터페이스(추상 메소드들의 집합)
void out();
}
public class AnonymousTest {
void out2() {
Sample sam = new Sample() {
@Override
public void out() {
System.out.println("이 부분은 재정의한 부분입니다.");
}
};
sam.out();
}
public static void main(String[] args) {
AnonymousTest at = new AnonymousTest();
at.out2();
}
}
① 3행: Sample은 인터페이스로 추상 메소드만 존재 (상속 받으면 오버라이딩을 해야함)
② 14행: AnonymousTest 클래스는 Sample을 상속받지 않고 out()메소드 실행 가능 (익명 객체로, 일회성)
③ 8행: 익명 객체 구현: Sample sam = new Sample(){};
[결과화면]
02 메소드 타입
(1) 매개변수가 없고 리턴 값이 없는 경우
(2) 매개변수가 없고 리턴 값이 있는 경우
(3) 매개변수가 있고 리턴 값이 없는 경우
(4) 매개변수가 있고 리턴 값이 있는 경우
package com.lambda;
interface Sample{ // 인터페이스(추상 메소드들의 집합)
int out(int a, int b); // 매개변수o, 리턴o
}
public class AnonymousTest {
void out2() {
Sample sam = new Sample() {
@Override
public int out(int a, int b) {
System.out.println("a + b = " + (a+b));
return (a+b);
}
};
sam.out(13, 25);
}
public static void main(String[] args) {
AnonymousTest at = new AnonymousTest();
at.out2();
}
}
① 4행: 리턴 값 존재 (int형)
② 4행: 매개변수 존재 (int형 2개)
[결과화면]
03 람다식(Lambda)
- 람다식이란?
람다식은 익명 함수(Anonymous function)을 지칭하는 용어
- 람다의 표현식
① 화살표 (->) 사용, (타입, 매개변수) -> (실행문);
② 객체.메소드((a, b)) -> (System.out.println);
ex) 위의 매개변수 예제 람다식으로 출력하기
package com.lambda;
interface Sample{ // 인터페이스(추상 메소드들의 집합)
int out(int a, int b); // 매개변수o, 리턴o
}
public class AnonymousTest {
void out2() {
Sample sam = new Sample() {
@Override
public int out(int a, int b) {
System.out.println("a + b = " + (a+b));
return (a+b);
}
};
}
public static void main(String[] args) {
Sample ss = (a, b) -> a+b; // 람다식
System.out.println(ss.out(13, 25));
}
}
[결과화면]
ex) 빠른 for문과 forEach(람다식)
package com.lambda;
import java.util.ArrayList;
class Name{
String name;
int score;
public Name() {
super();
}
public Name(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
public class ForTest {
public static void main(String[] args) {
ArrayList<Name> alist = new ArrayList<Name>();
alist.add(new Name("백두산", 90));
alist.add(new Name("한라산", 85));
alist.add(new Name("소백산", 100));
alist.add(new Name("광교산", 70));
alist.add(new Name("태백산", 99));
System.out.println("========빠른 for=======");
System.out.println("이름\t국어");
System.out.println("--------------");
for(Name k : alist) {
System.out.println(k.getName() + "\t" + k.getScore());
}
System.out.println();
System.out.println("========Lambda=======");
System.out.println("이름\t국어");
System.out.println("--------------");
alist.forEach(k->System.out.println(k.getName() + "\t" + k.getScore()));
}
}
[결과화면]
04 enum (ENUM)
- 열거형, 서로 연관된 상수들의 집합
- enum 대표명{a, b} // 대표명의 변수(a, b 변수만 받겠다는 의미)
ex) enum 사용법
package com.enumt;
public class EnumTest {
static String Personnel = "인사과";
static String Administration = "총무과";
static String Accounting = "경리과";
enum department{Personnel, Administration, Accounting}
public static void main(String[] args) {
String str = EnumTest.Accounting;
System.out.println("부서는 " + str + "입니다.");
}
}
① 11행: 클래스명.을 치면 enum 변수들만 출력됨
[결과화면]
ex) 이름, 거주지(enum), 성별(enum), 급여 출력
package com.enumt;
import java.text.DecimalFormat;
import java.util.ArrayList;
public class EnumTest {
enum Addr{서울, 인천, 전주};
enum Gender{남자, 여자};
String name;
int pay;
Addr addr; // 열거형 변수 새로 선언
Gender gen; // 열거형 변수 새로 선언
public EnumTest(String name, int pay, Addr addr, Gender gen) {
super();
this.name = name;
this.pay = pay;
this.addr = addr; // String이 아니라 Addr형
this.gen = gen; // String이 아니라 gen형
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPay() {
return pay;
}
public void setPay(int pay) {
this.pay = pay;
}
public Addr getAddr() {
return addr;
}
public void setAddr(Addr addr) {
this.addr = addr;
}
public Gender getGen() {
return gen;
}
public void setGen(Gender gen) {
this.gen = gen;
}
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#,##0");
ArrayList<EnumTest> alist = new ArrayList<EnumTest>();
alist.add(new EnumTest("홍길동1", 2500000, EnumTest.Addr.서울, EnumTest.Gender.남자));
alist.add(new EnumTest("홍길동2", 2700000, EnumTest.Addr.인천, EnumTest.Gender.남자));
alist.add(new EnumTest("홍길동3", 3400000, EnumTest.Addr.전주, EnumTest.Gender.여자));
alist.add(new EnumTest("홍길동4", 2000000, EnumTest.Addr.서울, EnumTest.Gender.남자));
alist.add(new EnumTest("홍길동5", 4000000, EnumTest.Addr.인천, EnumTest.Gender.여자));
System.out.println("이름\t거주지\t성별\t급여");
for(EnumTest k : alist) {
System.out.println(k.getName() + "\t" + k.getAddr() + "\t" + k.getGen() + "\t" + df.format(k.getPay()));
}
}
}
[결과화면]
'STUDY > Java' 카테고리의 다른 글
아파치 톰캣(Apache-Tomcat) 설치 (0) | 2021.11.05 |
---|---|
[JAVA] Stream 스트림 (0) | 2021.11.05 |
[JAVA] Collection (List, Set, Map) (0) | 2021.11.05 |
[JAVA] Generic 제네릭 (0) | 2021.11.05 |
[JAVA] Thread, 스레드 (0) | 2021.11.05 |