1

声明匿名类时,如下所示:

请注意,ResourceBundle.Control 是一个具体的类。

这里截取的片段。

private static void test(Locale locale) {
    ResourceBundle rb = ResourceBundle.getBundle("ResourceBundle", locale,
         new ResourceBundle.Control() {
         @Override
         public List<Locale> getCandidateLocales(String baseName, Locale locale) {
             if (baseName == null)
             throw new NullPointerException();
             if (locale.equals(new Locale("it", "IT"))) {
             return Arrays.asList(
                 locale,
                 Locale.ITALY,
                 Locale.CHINESE ,
                 Locale.ROOT);
             } else if (locale.equals(Locale.GERMANY)) {
             return Arrays.asList(
                 locale.GERMANY,
                 // no Locale.CHINESE here
                 Locale.ROOT);
             }
             return super.getCandidateLocales(baseName, locale);
         }
         });

我基本上看到extends声明匿名类时没有使用它的关键工作。它认为这是理所当然的吗?如果是这样,什么时候适合extends在匿名类中使用?

提前致谢。

4

1 回答 1

8

什么时候适合extends在匿名类中使用?

绝不。关键字extends适用于命名类,除了扩展类外,还可以实现接口。相反,匿名类可以实现接口或扩展类,但不能同时实现。这就是语法根本没有关键字的原因 - 只需在表达式后放置花括号new,并为基类或接口的方法提供实现。

于 2013-06-06T13:44:02.380 回答