小工具,enum的国际化
来源:互联网 发布:util-linux 编辑:程序博客网 时间:2024/05/22 05:26
有Person类一个:
public class Person{ //... other field private PersonStatus status; //...getter,setter}
其中的status字段是一个枚举类:
public enum PersonStatus{A,B,C,D}
有时候,显示PersonStatus时,不想使用其默认的name()方法,比如说中文。硬编码当然是可以实现的,不过不是好解决方案,所以鼓捣了一个国际化的小工具,很简单的,所以直接上代码,不解释。
public class EnumLocaleUtils {private static ResourceBundle getResourceBundle(Class<?> clazz, Locale locale) {return PropertyResourceBundle.getBundle(clazz.getName(), getLocale(locale));}private static Locale getLocale(Locale locale) {return locale == null?Locale.getDefault():locale;} //根据国际化名称取enum public static <T extends Enum<T>> T getByLocaleName(Class<T> clazz, String name, Locale locale) {ResourceBundle bundle = getResourceBundle(clazz, locale);if(bundle == null)return null;for(String key:bundle.keySet()) {if(bundle.getString(key).equals(name)) {return Enum.valueOf(clazz, key);}}return null;} //取得enum的国际化名称public static <T extends Enum<T>> String toLocalString(T e,Locale locale) {ResourceBundle bundle = getResourceBundle(e.getClass(), locale);if(bundle == null)return e.name();if(bundle.containsKey(e.name())) {return bundle.getString(e.name());}return "";}}
测试下:
先写测试类,用不上junit,就写个main函数吧。
public class Test{ public static main(String[] args){ System.out.println(EnumLocaleUtils.getByLocaleName(X.class, "优", new Locale("zh","CN")));//输出A System.out.println(EnumLocaleUtils.getByLocaleName(X.class, "良", new Locale("zh","CN")));//输出B System.out.println(EnumLocaleUtils.getByLocaleName(X.class, "中", new Locale("zh","CN")));//输出C System.out.println(EnumLocaleUtils.getByLocaleName(X.class, "差", new Locale("zh","CN")));//输出D System.out.println(EnumLocaleUtils.getByLocaleName(X.class, "未知", new Locale("zh","CN")));//输出null System.out.println(EnumLocaleUtils.toLocalString(X.A,null));//输出优 System.out.println(EnumLocaleUtils.toLocalString(X.A,new Locale("en","EN")));//也是输出优,找不到_en_EN,那么默认用唯一的一个_zh_CN代替 }}enum X{A,B,C,D}在同一个包下,建立一个X_zh_CN.properties
A=优B=良C=中D=差
nativeToAscii。
运行之,输出如下:
A
B
C
D
null
优
优
符合预期。
这个小工具是可用的了,有用的上的只管拿去,成功能被分享,是一件快乐的事情。
0 0
- 小工具,enum的国际化
- 自己写的国际化时Properties处理小工具
- 方便的小工具
- xorg的小工具
- 有意思的小工具
- 整理的小工具
- 实用的小工具
- 小工具的使用
- 【小工具】仿站小工具的使用及下载
- 防RSI的小工具
- 无处不在的网络小工具
- 清除系统的小工具
- apache的ab小工具
- 取证的简单小工具
- 一些不错的小工具
- 合并图片的小工具
- 有用的小工具收集
- 配置cuda 的小工具
- Projects:GTK on DirectFB for Embedded Systems
- iOS中OpenURL相关
- 讲silverlight中command最好理解的一篇文章
- 解密Oculus VR:90后辍学者把公司卖了20亿美元
- Sqlite常用sql语句
- 小工具,enum的国际化
- HTML 5游戏开发注意框架的使用
- jasper报表工具类
- php学习(1)开篇
- 随笔 java jar 的路径问题
- ADKlog抓取
- 【转载】 Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
- 关于File.separator
- 百度算法永远不变的一条就是一切以用户体验为中心。