尽管使用Java 8功能,项目如何支持Java 7
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了尽管使用Java 8功能,项目如何支持Java 7,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1403字,纯文字阅读大概需要3分钟。
内容图文
我正在审查github上的HikariCP项目,它声明它支持“Java 7和Java 8 maven artifact”,在其源代码中,它使用了一些Java 8特性:
java.util.function.Consumer;
java.util.function.Predicate;
java.util.function.UnaryOperator;
我想如果其他人使用Java 7引用此项目,则会发生错误.那么,该项目如何使其同时支持Java 7和Java 8?
解决方法:
这不是一个错误(正如我自己想的那样).该项目确实使用来自Java 8的类.它不使用Java 7进行编译,并且其Maven构建也不能与Java 7一起运行.
但是,由于Lambda中特定于Java 8的特性在源代码中没有使用,因此它确实与Java 7一起运行.
尝试创建Java 7项目,将HikariCP声明为依赖项,并运行以下代码:
import com.zaxxer.hikari.util.FastList;
public class Main {
public static void main(String[] args) {
FastList<String> fastList = new FastList<>(String.class);
fastList.add("Hello");
System.out.println(fastList);
}
}
它运行成功.另一方面,以下代码失败:
fastList.removeIf(null);
这是因为removeIf()和其他一些方法使用Java 8中的类,因此无法使用Java 7运行.但是它们都会抛出UnsupportedOperationException!您可能会注意到,导入Java 8类的唯一类是com.zaxxer.hikari.util.FastList.我不确定他们为什么这样做.
更新:只是想澄清项目字节码的版本是1.7,因为可以使用反编译器或hexdump轻松验证.它的源代码符合Java 7,因此可以构建
<source>1.7</source>
<target>1.7</target>
正如@Puce指出的那样.
另一方面,它必须使用JDK 1.8进行编译,以便在编译期间源代码中引用的Java 8类可用.编译代码后,只要没有尝试加载缺少的Java 8类(在本例中来自java.util.function包),就可以使用Java 7运行代码.
内容总结
以上是互联网集市为您收集整理的尽管使用Java 8功能,项目如何支持Java 7全部内容,希望文章能够帮你解决尽管使用Java 8功能,项目如何支持Java 7所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。