Java编程中的二进制兼容性与语句详解
1. 二进制兼容性与接口演变
在Java编程里,二进制兼容性是一个关键的考量因素。接口的演变可能会对程序的运行产生影响。例如下面这个 Cowboy 接口的示例:
interface Cowboy {
default void draw() {
System.out.println("Bang!");
}
}
当 Cowboy 接口被重新编译,而 CowboyArtist 类未重新编译时,使用新的 Cowboy 二进制文件与现有的 CowboyArtist 二进制文件运行程序,在链接时不会报错。然而,当 main 方法尝试调用 draw() 方法时,会引发 IncompatibleClassChangeError 异常。
1.1 注解类型的演变
注解类型的行为与其他接口类似。对注解类型添加或移除元素,类似于对接口添加或移除方法。不过,注解类型的其他更改,如使其可重复(§9.6.3),不会影响Java虚拟机对二进制文件的链接。这些更改主要影响操作注解的反射API的行为,相关API文档中明确了底层注解类型发生各种更改时的行为。
需要注意的是,添加或移除注解不会影响Java程序二进制表示的正确链接。
Java编程:二进制兼容性与语句详解
超级会员免费看
订阅专栏 解锁全文
9204

被折叠的 条评论
为什么被折叠?



