我正在从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的关键字与标识符。分享给大家供大家参考,具体如下: 关键字: 定义 特点 用于定义数据类型的关键字 用于定义流程控制的关键字 用于定义访问权限修饰符的关键字 用于定义类,函数,变量修饰符的关键字 用于定义类,函数,变量修饰符的关键字 用于定义类与类之间的关系的关