做项目的时候,对于常量的存放,很多人都放在interface中..这样的话就可以少写private static final等字段..省了代码.
如果是常用int型等常量.也会保存在枚举中.这样就可以通过枚举去取.
但是对于字符串的常量..枚举好像就没有办法去保存string类型的.
需求: 申明的常量是否存在某个常量..
所以这次还是用class是保存常量..这样的话,可以把方法放在类中,防止数据的不统一.
public class ServiceType {
public static final String COMMON = "0000"; // 通用
public static final String PHONE_FARE = "0001"; // 话费
public static final String PHONE_FLOW = "0002"; // 流量
public static final String BUSINESS = "0003"; // 电商
/**
* 判断服务是否在服务类型中,
*
* @author: wuxing
* @date: 2015年8月5日 下午4:23:56
*
*/
public static boolean isValidService(String serviceType) {
try {
Class<?> c = Class.forName("com.wuxing.ServiceType");
Field[] fields = c.getDeclaredFields();
for (int i = 0; fields != null && i < fields.length; i++) {
if (serviceType.equals(fields[i].get(null))) {
return true;
}
}
return false;
} catch (ClassNotFoundException | IllegalArgumentException | IllegalAccessException e) {
return false;
}
}
}
通过isValidService就可以判断常量参数是否在常量群中..
其中需要注意的是..fields[i].get(null) , 如果常量为static final,需要用get(null)去拿..而不是get(int)或者get(String)什么的.
然后通过反射,对申明的常量进行轮询...看是否在其中..
代码很简单..功能也很简单...方便以后使用.