Java 11 到 Java 8 的兼容性转换
欲倚绿窗伴卿卿,颇悔今生误道行。有心持钵丛林去,又负美人一片情。
静坐修观法眼开,祈求三宝降灵台,观中诸圣何曾见?不请情人却自来。
入山投谒得道僧,求教上师说因明。争奈相思无拘检,意马心猿到卿卿。
曾虑多情损梵行,入山又恐别倾城,世间安得两全法,不负如来不负卿
随着Java版本的更新,新的特性和改进不断被引入以提升开发效率和性能。然而,对于仍在使用Java 8的项目,需要将使用Java 11特性的代码转换为兼容Java 8的形式。难搞啊,世间安有两全法!
1. 使用InputStream
和文件I/O
Java 11引入了便利的方法如InputStream.readAllBytes()
和Files.writeString()
来简化文件操作。但在Java 8中,这些方法并不存在,因此需要使用替代方案。
原Java 11代码:
public boolean createOrUpdateFile(final Path path, final ByteArrayInputStream stream) {
if (!Files.exists(path)) {
return createFile(path, stream);
} else {
try {
Files.write(path, stream.readAllBytes());
return true;
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
转换为Java 8的代码:
public boolean createOrUpdateFile(final Path path, final ByteArrayInputStream stream) {
if (!Files.exists(path)) {
return createFile(path, stream);
} else {
try {
byte[] buffer = new byte[stream.available()];
stream.read(buffer);
Files.write(path, buffer);
return true;
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
2. URL连接和异常处理
在Java 11中,可以直接使用InputStream.readAllBytes()
从InputStream
读取所有字节。Java 8中需要手动处理。
原Java 11代码:
if (url == null || url.isEmpty()) {
throw new RuntimeException("Url argument is not specified");
}
URL uri = new URL(url);
HttpURLConnection connection = (HttpURLConnection) uri.openConnection();
connection