gpt4 book ai didi

java - 二进制兼容性问题 - 一个例子?

转载 作者:行者123 更新时间:2023-11-29 05:33:33 24 4
gpt4 key购买 nike

据我了解源代码兼容性以及如何轻松展示会破坏源代码兼容性的示例(更改方法名称、删除方法等),我在了解二进制兼容性如何实现时遇到了一些问题在实践中被打破。有没有人有一个保持源兼容性的简单示例会导致二进制兼容性问题,即不需要更改代码但需要重新编译?

最佳答案

一个例子(这是没有意味着唯一的一个)是如果库中方法的签名以兼容的方式发生变化。例如,考虑:

// Library.java v1
public class Library {
public static void print(String foo) {
System.out.println(foo);
}
}

// Client.java v1
public class Client {
public static void main(String[] args) {
Library.print("hello");
}
}

编译运行:

$ javac Client.java Library.java
$ java Client
hello

现在更改 Library.java - 注意 foo 参数的类型:

// Library.java v2
public class Library {
public static void print(Object foo) {
System.out.println(foo);
}
}

只需重新编译 Library.java 并尝试重新运行 Client:

$ javac Library.java 
$ java Client
Exception in thread "main" java.lang.NoSuchMethodError: Library.print(Ljava/lang/String;)V
at Client.main(Client.java:3)

关于java - 二进制兼容性问题 - 一个例子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com