在JDK 6中
我已经为locale(en,AT)实现了CalendarData_en_AT类,它是用户定义的语言环境(未在jre中定义)。我看到当我尝试使用Calendar.getInstance()
方法加载语言环境时,它会加载CalendarData_en.class
进一步调试后,我发现它只选取了LocaleMetaDataInfo
class
需要做什么才能在我们致电Calendar.getInstance(new Locale(en, AT))
时加载CalendarData_en_AT.class
以下代码:
我有一个班级CalendarData_en_AT.java
public class CalendarData_en_AT extends LocaleNamesBundle{
public CalendarData_en_AT(){
}
protected final Object[][] getContents(){
return
new Object[][] {
new Object[] { "firstDayOfWeek", "2" },
new Object[] { "minimalDaysInFirstWeek", "4" }
};
}
}
已编译的类包含在.jar文件中,并已放在jre / lib / ext
中现在来自我的测试课
如果我致电Calendar.getInstance(new Locale("en","AT")).getFirstDayOfWeek()
它应该返回2,但截至目前它返回1,原因是它加载CalendarData_en.class
提供而不是CalendarData_en_AT.class
用户实现
答案 0 :(得分:0)
不确定您是否可以为Calendar
课程实际执行此操作。
您必须创建符合Locale Sensitive Services SPI的提供程序。
请Sun员工查看this blog post,了解有关创建和打包此类提供商的更多详细信息