자 바 는 If else 와 switch 를 무엇으로 대체 합 니까?
11643 단어 Java
그렇다면 무엇으로 대체 할 것 인가? 많은 사람들 이 틀림없이 switch 라 고 생각 할 것 이다.인터넷 에는 switch 와 if else 의 댓 글 이 많 고 이들 의 성능 을 비교 하 는 것 도 있 습 니 다. 제 가 지금 일 하고 있 는 회사 에 서 는 판단 조건 이 많 을 때 if else 를 사용 하 는 것 을 허락 하지 않 고 switch 로 if else 를 대체 할 수 없습니다.그럼 어떻게 해 야 돼 요?그래서 인터넷 에서 오랫동안 답 을 찾 았 더 니 드디어 방향 이 잡 혔 다.맵 대신 맵 의 키 는 판단 해 야 할 조건 이 고, value 는 조건 을 만족 시 킬 때 해 야 할 일이 다.그래서 나 는 내 생각 대로 if 에 관 한 도구 류 를 썼 다.
package com.asen.util;
import java.util.Map;
/**
* @Decription: a function,can replace the 'if else' and 'switch'
* @Author: Asen
* @Date: Create in 16:36 2018/4/29 0029
* @Email: [email protected]
**/
public class IfFunction<K> {
private Map<K, Function> map;
/**
* the IfFunction need a map to save keys and functions
*
* @param map a map
*/
public IfFunction(Map<K, Function> map) {
this.map = map;
}
/**
* add key and function to the map
*
* @param key the key need to verify
* @param function it will be executed when the key exists
* @return this.
*/
public IfFunction<K> add(K key, Function function) {
this.map.put(key, function);
return this;
}
/**
* Determine whether the key exists, and if there is, the corresponding method is executed.
*
* @param key the key need to verify
*/
public void doIf(K key) {
if (this.map.containsKey(key)) {
map.get(key).invoke();
}
}
/**
* Determine whether the key exists, and if there is, the corresponding method is executed.
* otherwise the defaultFunction is executed.
*
* @param key the key need to verify
* @param defaultFunction it will be executed when the key is not exists.
*/
public void doIfWithDefault(K key, Function defaultFunction) {
if (this.map.containsKey(key)) {
map.get(key).invoke();
} else {
defaultFunction.invoke();
}
}
}
package com.asen.util;
/**
* @Decription: the function of IfFunction's key
* @Author: Asen
* @Date: Create in 17:35 2018/4/29 0029
* @Email: [email protected]
**/
public interface Function {
/**
* need to do something
*/
void invoke();
}
package com.asen.example;
import com.asen.util.IfFunction;
import java.util.HashMap;
/**
* @Decription: the IfFunction test
* @Author: Asen
* @Date: Create in 12:39 2018/5/1 0001
* @Email: [email protected]
**/
public class Test {
public static void main(String[] args) {
IfFunction ifFunction = new IfFunction<>(new HashMap<>(5));
ifFunction.add("hello", () -> System.out.println(" "))
.add("helloWorld", () -> System.out.println(" , "))
.doIfWithDefault("hello", () -> System.out.println(" key!"));
}
}
혼자 쓰 니까 괜 찮 은 데 성능 이 어떤 지 모 르 겠 어 요.테스트 같은 거 안 해 봤 어!
프로젝트 소스 코드 주소:https://github.com/SmythAsen/if-util
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.