当前位置: 首页 > 面试题库 >

Java:与新关键字的接口怎么可能?

杨赞
2023-03-14
问题内容

我正在从Java库中读取一些源代码,但在这里我很困惑。

这段代码来自jaxb库中的Document.java,而 ContentVisitor是 同一包中的 一个Interface
,我们如何使用new关键字创建Interface的实例?那不合法吗?

public final class Document {
.
.
 private final ContentVisitor visitor = new ContentVisitor() {
    public void onStartDocument() {

        throw new IllegalStateException();
    }

    public void onEndDocument() {
        out.endDocument();
    }

    public void onEndTag() {
        out.endTag();
        inscopeNamespace.popContext();
        activeNamespaces = null;
    }
}

问题答案:

在代码中,您没有创建接口的实例。而是,代码定义了实现该接口的匿名类,并实例化该类。

该代码大致等效于:

public final class Document {

    private final class AnonymousContentVisitor implements ContentVisitor {

        public void onStartDocument() {
            throw new IllegalStateException();
        }

        public void onEndDocument() {
            out.endDocument();
        }

        public void onEndTag() {
            out.endTag();
            inscopeNamespace.popContext();
            activeNamespaces = null;
        }
    }

    private final ContentVisitor visitor = new AnonymousContentVisitor();
}


 类似资料:
  • 假设您有ClassA、ClassB、ClassC和InterfaceA。 ClassA和ClassB实现interfaceA,而classC包含一个列表

  • 问题内容: Java 9最大的功能之一是Project Jigsaw定义的模块系统。当从JavaOne 2015 的Project Jigsaw:The Hood 中读取幻灯片时,我注意到以下源代码: 对我而言,有趣的是文件结尾,并且似乎使用了两个新关键字:和。Java 9将引入哪些其他关键字?向后兼容性(即名为的函数或变量)将如何处理? 问题答案: Java SE 9 Edition Java语

  • 问题内容: Java 13引入了 用于表达式的关键字。 如何使用它,与默认值或值有什么区别? 问题答案: 问答环节 如何使用? 需要完整块时,带有箭头标签: }; 使用传统积木: }; 默认收益有什么区别? 一条语句将控制权返回给 方法 (第8.4节,第§15.12节)或 构造函数 (第8.8节和第15.9节) 的调用者, 而一条语句则通过 使一个封闭的表达式产生一个指定值来转移控制权。 突破值有

  • 本文向大家介绍浅谈Java中的final关键字与C#中的const, readonly关键字,包括了浅谈Java中的final关键字与C#中的const, readonly关键字的使用技巧和注意事项,需要的朋友参考一下 在编程语言中都有某种方式,告知编译器一块数据是恒定不变的。有两个需求 1. 一个永不改变的编译器常量 2. 一个在运行时被初始化的值,而这个值不会被改变 在Java中,使用fina

  • 本文向大家介绍请你讲讲Java里面的final关键字是怎么用的?相关面试题,主要包含被问及请你讲讲Java里面的final关键字是怎么用的?时的应答技巧和注意事项,需要的朋友参考一下 考察点:关键字 当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所

  • 本文向大家介绍Java的关键字与标识符小结,包括了Java的关键字与标识符小结的使用技巧和注意事项,需要的朋友参考一下 本文总结了Java的关键字与标识符。分享给大家供大家参考,具体如下: 关键字: 定义 特点 用于定义数据类型的关键字 用于定义流程控制的关键字 用于定义访问权限修饰符的关键字 用于定义类,函数,变量修饰符的关键字 用于定义类,函数,变量修饰符的关键字 用于定义类与类之间的关系的关