이로

Enum 사용 본문

컴퓨터/자바

Enum 사용

利路 2020. 12. 21. 11:31
반응형

참고 포스트

woowabros.github.io/tools/2017/07/10/java-enum-uses.html

 

Java Enum 활용기 - 우아한형제들 기술 블로그

안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다.이번 사내 블로그 포스팅 주제로 저는 Java Enum 활용 경험을 선택하였습니다. 이전에 개인 블로그에 Enum에 관해

woowabros.github.io

 

코드적용

소스코드(일부)

import java.util.*;

public enum CntntsType {

	IMG("이미지", Arrays.asList("png"))
	, VOD("동영상", Arrays.asList("mp4"))
	, DOC("문서", Arrays.asList("doc"))
	, AOD("오디오", Arrays.asList("mp3"))
	, WEB("웹", Arrays.asList("html"))
	, PKG("패키지", Arrays.asList("zip"));
	
	private String title;
	private List<String> extendsList;
	
	CntntsType(String title, List<String> extendsList){
		this.title = title;
		this.extendsList = extendsList;
	}
	
	public static CntntsType findByCntntsType(String extendType) {
		return Arrays.stream(CntntsType.values())
				.filter(cntntsType -> cntntsType.hasExtends(extendType))
				.findAny()
				.orElse(null);
	}
	
	private boolean hasExtends(String extendType) {
		return extendsList.stream().anyMatch(extend -> extend.equals(extendType));
	}
	
	public String getTitle() {
		return title;
	}
}

 

테스트코드(일부)

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

class CntntsTypeTest {

	@Test
	@DisplayName("IMG - png 매칭 테스트")
	void cntntsExtendsMatchTest() {
		Assertions.assertTrue(CntntsType.IMG == CntntsType.findByCntntsType("png"));
	}

	@Test
	@DisplayName("IMG - 다른확장자 매칭 테스트")
	void cntntsExtendsNotMatchTest() {
		Assertions.assertTrue(CntntsType.IMG != CntntsType.findByCntntsType("mp4"));
	}
	
	@Test
	@DisplayName("IMG - null 테스트")
	void cntntsExtendsNullTest() {
		Assertions.assertTrue(CntntsType.IMG != CntntsType.findByCntntsType(null));
	}
	
	@Test
	@DisplayName("IMG - 빈값 테스트")
	void cntntsExtendsBlackTest() {
		Assertions.assertTrue(CntntsType.IMG != CntntsType.findByCntntsType(""));
	}
}

 

 

반응형

'컴퓨터 > 자바' 카테고리의 다른 글

JPA Repository Custom Query  (0) 2020.06.29
인터페이스 기반 프로그래밍  (0) 2020.03.20
함수와 메서드의 차이  (0) 2019.10.17
자바 이펙티브 관련 링크 모음  (0) 2019.05.26
Comments