Calendar.getInstance方法不加载用户定义的语言环境类

时间:2011-01-03 08:34:21

标签: java calendar locale

在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用户实现

1 个答案:

答案 0 :(得分:0)

不确定您是否可以为Calendar课程实际执行此操作。 您必须创建符合Locale Sensitive Services SPI的提供程序。

请Sun员工查看this blog post,了解有关创建和打包此类提供商的更多详细信息