在声明匿名类时,如下所示:
请注意,ResourceBundle.Control是一个具体的类。
摘录自here的片段。
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
?提前致谢。
最佳答案
什么时候适合在匿名类中使用extends
?
决不。关键字extends
适用于命名类,该类除了扩展类外还可以实现接口。相反,匿名类可以实现一个接口或扩展一个类,但不能两者都扩展。这就是语法根本没有关键字的原因-只需在new
表达式后加上花括号,然后为基类或接口的方法提供实现。
关于java - 匿名类扩展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16963675/