- 浏览: 93278 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
bighero3:
很好。值得收藏
论坛数组排序方法总结 -
shellfish:
其实可以在解压后用 yum localinstall ./*. ...
centos-安装openoffice -
lwcheng1985:
hareamao 写道断言是自1.4引入的关键字,似乎用起来不 ...
jdk1.6拾遗之assert,TreeSet -
hareamao:
断言是自1.4引入的关键字,似乎用起来不爽,所以很少在代码中出 ...
jdk1.6拾遗之assert,TreeSet -
80705041:
多谢楼主啦,很实用~!!
Myeclipse8.5中svn插件安装方法总结
public @interface ResourceResource 注释标记应用程序所需的资源。此注释可以应用于应用程序组件类,或者该组件类的字段或方法。如果将该注释应用于一个字段或方法,那么初始化应用程序组件时容器将把所请求资源的一个实例注入其中。如果将该注释应用于组件类,则该注释将声明一个应用程序在运行时将查找的资源。
即使此注释没有被标记为 Inherited,部署工具仍然需要检查任意组件类的所有超类,以发现这些超类中所有使用此注释的地方。所有此类注释实例都指定了应用程序组件所需的资源。注意,此注释可能出现在超类的 private 字段和方法上;在这种情况下容器也需要执行注入操作。
public abstract class ResourceBundleextends Object
资源包包含特定于语言环境的对象。当程序需要一个特定于语言环境的资源时(如 String),程序可以从适合当前用户语言环境的资源包中加载它。使用这种方式,可以编写很大程度上独立于用户语言环境的程序代码,它将资源包中大部分(即便不是全部)特定于语言环境的信息隔离开来。
这使编写的程序可以:
轻松地本地化或翻译成不同的语言
一次处理多个语言环境
以后可以轻松进行修改,以便支持更多的语言环境
资源包属于这样的系列,其成员共享一个公共的基本名称,但是名称中还有标识其语言环境的其他组件。例如,某个资源包系列的基本名称可能是 "MyResources"。该系列应该有一个默认资源包,其名称与其系列名相同( "MyResources"),如果不支持指定的语言环境,则应该将此资源包用作最后的手段。然后,此系列可根据需要提供特定于语言环境的成员,例如一个名为 "MyResources_de" 的德语资源包。
一个系列中的每个资源包都包含相同的项,但是这些项已经针对该资源包所代表的语言环境进行了翻译。例如,"MyResources" 和 "MyResources_de" 可能有用在取消操作按钮上的 String。在 "MyResources" 中,String 可能包含 "Cancel",而 "MyResources_de" 中则可能包含 "Abbrechen"。
如果不同的国家/地区有不同的资源,则可以对它们进行限定:例如,"MyResources_de_CH" 包含瑞士 (CH) 中包含德语 (de) 的对象。如果只想修改限定中的某些资源,就可以这样做。
当程序需要特定于语言环境的对象时,它使用 getBundle 方法加载 ResourceBundle 类:
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources", currentLocale);
资源包包含键/值对。键唯一地标识了包中特定于语言环境的对象。下面是一个 ListResourceBundle 示例,它包含两个键/值对:
public class MyResources extends ListResourceBundle {
protected Object[][] getContents() {
return new Object[][] {
// LOCALIZE THE SECOND STRING OF EACH ARRAY (e.g., "OK")
{"OkKey", "OK"},
{"CancelKey", "Cancel"},
// END OF MATERIAL TO LOCALIZE
};
}
}
键始终为 String 类型。在此示例中,两个键是 "OkKey" 和 "CancelKey"。在上面的示例中,值也是 String 类型,即 "OK" 和 "Cancel",但并非必须如此。值可以是任意对象类型。
可以使用适当的获取方法从资源包中获取某个对象。因为 "OkKey" 和 "CancelKey" 都是字符串,所以应该使用 getString 获取它们:
button1 = new Button(myResources.getString("OkKey"));
button2 = new Button(myResources.getString("CancelKey"));
所有获取方法都需要将键作为参数并返回对象(如果找到的话)。如果未找到对象,则获取方法将抛出 MissingResourceException。
除了 getString 之外,ResourceBundle 还提供了获取字符串数组的方法 getStringArray,以及用于其他任意对象类型的 getObject 方法。使用 getObject 时,必须将结果强制转换为适当的类型。例如:
int[] myIntegers = (int[]) myResources.getObject("intList");
Java 平台提供了两个 ResourceBundle 的子类,即 ListResourceBundle 和 PropertyResourceBundle,这为创建资源提供了一种相当简单的方式。正如在前面示例中所看到的,ListResourceBundle 以键/值对的列表方式管理其资源。PropertyResourceBundle 则使用一个属性文件来管理其资源。
如果 ListResourceBundle 或 PropertyResourceBundle 无法满足需求,那么可以编写自己的 ResourceBundle 子类。子类必须重写两个方法:handleGetObject 和 getKeys()。
ResourceBundle.Control
ResourceBundle.Control 类提供通过带 ResourceBundle.Control 实例的 getBundle 工厂方法执行包加载进程所需的信息。为了启用非标准资源包格式、更改搜索策略或定义缓存参数,可以实现自己的子类。有关细节请参考类和 getBundle 工厂方法的描述。
缓存管理
getBundle 工厂方法创建的资源包实例是默认缓存的,如果资源包实例已经缓存,那么这些工厂方法将多次返回相同的资源包实例。getBundle 客户端可以清除缓存、使用生存时间值管理已缓存资源包实例的生命周期,或者指定不缓存资源包实例。有关细节请参考getBundle 工厂方法、clearCache、ResourceBundle.Control.getTimeToLive 和 ResourceBundle.Control.needsReload 的描述。
示例
下面是一个极其简单的 ResourceBundle 子类示例 MyResources,它管理两个资源(对于大量的资源,应该使用 Map)。注意,如果某个“父级”ResourceBundle 处理具有相同值的相同键(如下面的 okKey),则无需提供值。
// default (English language, United States)
public class MyResources extends ResourceBundle {
public Object handleGetObject(String key) {
if (key.equals("okKey")) return "Ok";
if (key.equals("cancelKey")) return "Cancel";
return null;
}
public Enumeration<String> getKeys() {
return Collections.enumeration(keySet());
}
// Overrides handleKeySet() so that the getKeys() implementation
// can rely on the keySet() value.
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("okKey", "cancelKey"));
}
}
// German language
public class MyResources_de extends MyResources {
public Object handleGetObject(String key) {
// don't need okKey, since parent level handles it.
if (key.equals("cancelKey")) return "Abbrechen";
return null;
}
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("cancelKey"));
}
}
不必限制只使用 ResourceBundle 的单个系列。例如,可以有异常消息 ExceptionResources 的包集(ExceptionResources_fr、ExceptionResources_de 等)和窗口小部件 WidgetResource 的包集(WidgetResources_fr、WidgetResources_de 等);可以按自己喜欢的方式分解资源。
即使此注释没有被标记为 Inherited,部署工具仍然需要检查任意组件类的所有超类,以发现这些超类中所有使用此注释的地方。所有此类注释实例都指定了应用程序组件所需的资源。注意,此注释可能出现在超类的 private 字段和方法上;在这种情况下容器也需要执行注入操作。
public abstract class ResourceBundleextends Object
资源包包含特定于语言环境的对象。当程序需要一个特定于语言环境的资源时(如 String),程序可以从适合当前用户语言环境的资源包中加载它。使用这种方式,可以编写很大程度上独立于用户语言环境的程序代码,它将资源包中大部分(即便不是全部)特定于语言环境的信息隔离开来。
这使编写的程序可以:
轻松地本地化或翻译成不同的语言
一次处理多个语言环境
以后可以轻松进行修改,以便支持更多的语言环境
资源包属于这样的系列,其成员共享一个公共的基本名称,但是名称中还有标识其语言环境的其他组件。例如,某个资源包系列的基本名称可能是 "MyResources"。该系列应该有一个默认资源包,其名称与其系列名相同( "MyResources"),如果不支持指定的语言环境,则应该将此资源包用作最后的手段。然后,此系列可根据需要提供特定于语言环境的成员,例如一个名为 "MyResources_de" 的德语资源包。
一个系列中的每个资源包都包含相同的项,但是这些项已经针对该资源包所代表的语言环境进行了翻译。例如,"MyResources" 和 "MyResources_de" 可能有用在取消操作按钮上的 String。在 "MyResources" 中,String 可能包含 "Cancel",而 "MyResources_de" 中则可能包含 "Abbrechen"。
如果不同的国家/地区有不同的资源,则可以对它们进行限定:例如,"MyResources_de_CH" 包含瑞士 (CH) 中包含德语 (de) 的对象。如果只想修改限定中的某些资源,就可以这样做。
当程序需要特定于语言环境的对象时,它使用 getBundle 方法加载 ResourceBundle 类:
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources", currentLocale);
资源包包含键/值对。键唯一地标识了包中特定于语言环境的对象。下面是一个 ListResourceBundle 示例,它包含两个键/值对:
public class MyResources extends ListResourceBundle {
protected Object[][] getContents() {
return new Object[][] {
// LOCALIZE THE SECOND STRING OF EACH ARRAY (e.g., "OK")
{"OkKey", "OK"},
{"CancelKey", "Cancel"},
// END OF MATERIAL TO LOCALIZE
};
}
}
键始终为 String 类型。在此示例中,两个键是 "OkKey" 和 "CancelKey"。在上面的示例中,值也是 String 类型,即 "OK" 和 "Cancel",但并非必须如此。值可以是任意对象类型。
可以使用适当的获取方法从资源包中获取某个对象。因为 "OkKey" 和 "CancelKey" 都是字符串,所以应该使用 getString 获取它们:
button1 = new Button(myResources.getString("OkKey"));
button2 = new Button(myResources.getString("CancelKey"));
所有获取方法都需要将键作为参数并返回对象(如果找到的话)。如果未找到对象,则获取方法将抛出 MissingResourceException。
除了 getString 之外,ResourceBundle 还提供了获取字符串数组的方法 getStringArray,以及用于其他任意对象类型的 getObject 方法。使用 getObject 时,必须将结果强制转换为适当的类型。例如:
int[] myIntegers = (int[]) myResources.getObject("intList");
Java 平台提供了两个 ResourceBundle 的子类,即 ListResourceBundle 和 PropertyResourceBundle,这为创建资源提供了一种相当简单的方式。正如在前面示例中所看到的,ListResourceBundle 以键/值对的列表方式管理其资源。PropertyResourceBundle 则使用一个属性文件来管理其资源。
如果 ListResourceBundle 或 PropertyResourceBundle 无法满足需求,那么可以编写自己的 ResourceBundle 子类。子类必须重写两个方法:handleGetObject 和 getKeys()。
ResourceBundle.Control
ResourceBundle.Control 类提供通过带 ResourceBundle.Control 实例的 getBundle 工厂方法执行包加载进程所需的信息。为了启用非标准资源包格式、更改搜索策略或定义缓存参数,可以实现自己的子类。有关细节请参考类和 getBundle 工厂方法的描述。
缓存管理
getBundle 工厂方法创建的资源包实例是默认缓存的,如果资源包实例已经缓存,那么这些工厂方法将多次返回相同的资源包实例。getBundle 客户端可以清除缓存、使用生存时间值管理已缓存资源包实例的生命周期,或者指定不缓存资源包实例。有关细节请参考getBundle 工厂方法、clearCache、ResourceBundle.Control.getTimeToLive 和 ResourceBundle.Control.needsReload 的描述。
示例
下面是一个极其简单的 ResourceBundle 子类示例 MyResources,它管理两个资源(对于大量的资源,应该使用 Map)。注意,如果某个“父级”ResourceBundle 处理具有相同值的相同键(如下面的 okKey),则无需提供值。
// default (English language, United States)
public class MyResources extends ResourceBundle {
public Object handleGetObject(String key) {
if (key.equals("okKey")) return "Ok";
if (key.equals("cancelKey")) return "Cancel";
return null;
}
public Enumeration<String> getKeys() {
return Collections.enumeration(keySet());
}
// Overrides handleKeySet() so that the getKeys() implementation
// can rely on the keySet() value.
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("okKey", "cancelKey"));
}
}
// German language
public class MyResources_de extends MyResources {
public Object handleGetObject(String key) {
// don't need okKey, since parent level handles it.
if (key.equals("cancelKey")) return "Abbrechen";
return null;
}
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("cancelKey"));
}
}
不必限制只使用 ResourceBundle 的单个系列。例如,可以有异常消息 ExceptionResources 的包集(ExceptionResources_fr、ExceptionResources_de 等)和窗口小部件 WidgetResource 的包集(WidgetResources_fr、WidgetResources_de 等);可以按自己喜欢的方式分解资源。
发表评论
-
jvm原理及部分配置
2010-08-03 09:40 1272Java语言引入了Java虚拟 ... -
jdk 拾遗 URL.URI ,HttpURLConnectionextends
2010-07-26 13:38 1345public abstract class HttpURLCo ... -
jdk拾遗之ThreadGroup
2010-07-26 10:57 804public class ThreadGroupextends ... -
eclipse-下安装svn插件
2010-07-20 11:34 18331,用links方法进安装 1. 从subclipse官方网站 ... -
eclipse 无法启动 JVM terminated. Exit code=-1
2010-07-15 11:47 786eclipse 无法启动 JVM terminated. Ex ... -
Jdk拾遗-StringBuffer与StringBuilder
2010-07-14 14:21 642public final class StringBuffer ... -
数据库命名规范(转)
2010-07-13 10:58 1023转自(http://blog.csdn.net/Edwardd ... -
java-jdk拾遗-list,iterator,enum
2010-07-05 17:15 1019List 如果 List 允许进行 ... -
ava-jdk拾遗-Set
2010-07-05 17:06 782Set java.util 接口 Set<E> ... -
ava-jdk拾遗-Map
2010-07-05 16:27 827Map: Map 接口提供三种coll ... -
java-jdk拾遗1
2010-06-30 14:42 8411.TreadLocal 该类提供了线 ... -
配置java环境变量
2010-06-22 09:55 3956配置java环境变量 (转自:http://blog.csdn ... -
Myeclipse8.5中svn插件安装方法总结
2010-06-22 09:29 16206方法总结 方法一:在线安装 1.打开HELP-> ... -
数据库设计字段-null备注
2010-06-13 10:10 1282在工作中,设计数据库难免会出现各种缺陷,例如产生null字段, ... -
论坛数组排序方法总结
2010-06-12 17:56 1025原题: 有一个整数 ... -
论坛面试题mark
2010-06-03 09:24 902刚在论坛上看到http://www.iteye.com/top ... -
从架构差异看Web高性能开发
2010-04-26 15:34 712从架构差异看Web高性能开发 转自:http://blog. ... -
Extjs错误集合
2010-04-15 14:22 790Ext is not defined 错误 1.引用顺序 ... -
Servlet生命周期
2010-03-05 16:37 653转自:http://book.51cto.com/ ... -
Socket例子和数据库链接
2010-03-02 12:19 2020服务端: package com.test.dp; imp ...
相关推荐
JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11...
jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助...
mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk...
jdk7 jdk8 jdk9 jdk10 jdk11 jdk12 jdk13 jdk14 (win-64位) 资源共享
JDK大全 JDK1.6 JDK1.7 JDK1.8 JDK1.9 JDK10 JDK11 JDK12
jdk内存设置 jdk内存设置 jdk内存设置 jdk内存设置 jdk内存设置 jdk内存设置
jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk配置jdk...
JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK11、JDK...
安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装JDK安装...
官网 jdk6,jdk7,jdk8,jdk9,jdk10 windox 32位、64位、linux 32位、64位 百度云。
Linux更换JDK+weblogic更换JDK 全局更换JDK Linux更换JDK+weblogic更换JDK 全局更换JDK
jdk17和jdk1.8下载安装包
java-jdk1.8-8u361-all-jdk-win-linux 该压缩包中包含jdk1.8-8u361下windows版本和linux版本,其包含快速安装包和对应的jdk压缩包版本,具体内容如下: jdk-8u361-linux-aarch64.rpm jdk-8u361-linux-i586.rpm jdk-8...
jdk-11.0.6_windowsjdk-11.0.6_windowsjdk-11.0.6_windowsjdk-11.0.6_windowsjdk-11.0.6_windowsjdk-11.0.6_windowsjdk-11.0.6_windows
jdk源码, jdk源码 jdk源码, jdk源码, jdk源码, jdk源码 jdk源码 jdk源码 jdk源码
jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8jdk8安装包jdk8安装包jdk8安装包jdk8安装包jdk8安装包jdk8安装包jdk8安装包jdk8安装包jdk8安装包jdk8安装包jdk8安装包jdk8安装包jdk8安装包...
hpunix jdk jdk1.8 hpunix jdk jdk1.8 安装方法见博客https://blog.csdn.net/diandiandididi/article/details/105862382
jdk8中文说明文档_CHM.zip jdk1.8文档 jdk1.8说明文档 官方直接翻译
JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7...
JDK1.8中文文档 JDK1.8中文 jkd8中文文档 JDK中文版 标准的API规范文档,谷歌中文翻译 全翻译