您的位置:首页 > 其它

类中静态常量的判断

2015-08-06 14:17 274 查看
做项目的时候,对于常量的存放,很多人都放在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)什么的.

然后通过反射,对申明的常量进行轮询...看是否在其中..

代码很简单..功能也很简单...方便以后使用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: