实现功能:根据不同的ID调用不同的函数,返回不同的内容,如果用if条件判断,显然很啰嗦
1、初始化
定义常量类:
class IdTypeEnum {
public static final String FIRST_ID_TYPE = "type1";
public static final String SECOND_ID_TYPE = "type2";
public static final String THIRD_ID_TYPE = "type3";
}
定义不同的函数功能:
public static int readType1Content(long curTime) {
return 1;
}
public static int readType2Content(long curTime) {
return 2;
}
public static int readType3Content(long curTime) {
return 3;
}
2、实现一个接口用于返回所需内容
interface Operation {
int readContent(long curTime);
}
3、建立一个村操作的Map,并添加不同功能
/**
* 存读取的操作
*/
static Map<String, Operation> operationMap = new HashMap<>();
static {
/**
* lambda表达式带参数,有返回
* operationMap.put(IdTypeEnum.FIRST_ID_TYPE, (curTime) -> readType1Content(curTime));
* operationMap.put(IdTypeEnum.SECOND_ID_TYPE, (curTime) -> readType2Content(curTime));
* operationMap.put(IdTypeEnum.SUMMARY_ID_TYPE, (curTime) -> readType3Content(curTime));
*/
operationMap.put(IdTypeEnum.FIRST_ID_TYPE, TestLambda::readType1Content);
operationMap.put(IdTypeEnum.SECOND_ID_TYPE, TestLambda::readType2Content);
operationMap.put(IdTypeEnum.THIRD_ID_TYPE, TestLambda::readType3Content);
}
4、实现测试
public static void main(String[] args) {
long curTime = System.currentTimeMillis();
System.out.println(operationMap.get(IdTypeEnum.FIRST_ID_TYPE).readContent(curTime));
System.out.println(operationMap.get(IdTypeEnum.SECOND_ID_TYPE).readContent(curTime));
System.out.println(operationMap.get(IdTypeEnum.THIRD_ID_TYPE).readContent(curTime));
/**
* 1
* 2
* 3
*/
}
所有代码:
package learn;
import java.util.HashMap;
import java.util.Map;
class IdTypeEnum {
public static final String FIRST_ID_TYPE = "type1";
public static final String SECOND_ID_TYPE = "type2";
public static final String THIRD_ID_TYPE = "type3";
}
public class TestLambda {
interface Operation {
int readContent(long curTime);
}
/**
* 存读取的操作
*/
static Map<String, Operation> operationMap = new HashMap<>();
static {
/**
* operationMap.put(IdTypeEnum.FIRST_ID_TYPE, (curTime) -> readType1Content(curTime));
* operationMap.put(IdTypeEnum.SECOND_ID_TYPE, (curTime) -> readType2Content(curTime));
* operationMap.put(IdTypeEnum.SUMMARY_ID_TYPE, (curTime) -> readType3Content(curTime));
*/
operationMap.put(IdTypeEnum.FIRST_ID_TYPE, TestLambda::readType1Content);
operationMap.put(IdTypeEnum.SECOND_ID_TYPE, TestLambda::readType2Content);
operationMap.put(IdTypeEnum.THIRD_ID_TYPE, TestLambda::readType3Content);
}
public static int readType1Content(long curTime) {
return 1;
}
public static int readType2Content(long curTime) {
return 2;
}
public static int readType3Content(long curTime) {
return 3;
}
public static void main(String[] args) {
long curTime = System.currentTimeMillis();
System.out.println(operationMap.get(IdTypeEnum.FIRST_ID_TYPE).readContent(curTime));
System.out.println(operationMap.get(IdTypeEnum.SECOND_ID_TYPE).readContent(curTime));
System.out.println(operationMap.get(IdTypeEnum.THIRD_ID_TYPE).readContent(curTime));
}
}