简介

毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本。这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。在本文中我们将学习这些新特性,并用实际的例子说明在什么场景下适合使用。

这个教程包含Java开发者经常面对的几类问题:

语言

编译器

工具

运行时(JVM)

Java编译器的新特性

参数名称

为了在运行时获得Java程序中方法的参数名称,老一辈的Java程序员必须使用不同方法,例如Paranamer liberary。Java 8终于将这个特性规范化,在语言层面(使用反射API和Parameter.getName()方法)和字节码层面(使用新的javac编译器以及-parameters参数)提供支持。

public class ParameterNames {

public static void main(String[] args) {

try {

Method main = ParameterNames.class.getMethod("main", String[].class);

Parameter[] parameters = main.getParameters();

Arrays.stream(parameters).forEach(parameter -> System.out.println(parameter.getName()));

} catch (NoSuchMethodException e) {

e.printStackTrace();

}

}

}

在Java 8中这个特性是默认关闭的,因此如果不带-parameters参数编译上述代码并运行,则会输出如下结果:

Parameter: arg0

如果带-parameters参数,则会输出如下结果(正确的结果):

Parameter: args

如果你使用Maven进行项目管理,则可以在maven-compiler-plugin编译器的配置项中配置-parameters参数:

org.apache.maven.plugins

maven-compiler-plugin

3.1

-parameters

1.8

1.8

欢迎加入学习交流群569772982,大家一起学习交流。

java编译器加上参数_java8 之 Java编译器的新特性相关推荐

  1. 从Java 8 到 Java 14,几个令人印象深刻的新特性

    1.Lambda 表达式 Lambda表达式时Java 8中的一个新特性,它允许许把函数作为一个方法的参数(函数作为参数传递进方法中). Lambda 表达式的语法格式如下: (parameters) ...

  2. java新的日期_java8你应该了解的新特性(新时间与日期API)

    java8你应该了解的新特性(新时间与日期API) java8,你应该了解的新特性(新时间与日期API) 1.使用 LocalDate .LocalTime .LocalDateTime LocalD ...

  3. java development kie_Java Development Kit (JDK) 发展历程 及新特性

    "JDK1.5"(开发代号猛虎)的新特性 1.泛型(Generic) C++通过模板技术 可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能.一个集合可以放任何类型 ...

  4. JAVA零基础小白入门上手教程之day22-JDK新特性

    接口中的新特性 接口我们之前已经学过了,那么接口中内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9). 接口中可以有的内容 JDK1. ...

  5. 一、了解java虚拟机历史发展、及java8带来的新特性

    1.Jdk8的新特性:     1.Lambda表达式     2.Stream函数式操作流元素集合     3.接口新增:默认方法与静态方法     4.方法引用,与Lambda表达式联合使用    ...

  6. java for each 的源_Java JDK1.5的新特性之for-each循环的底层原理

    今天给大家分享一下for-each循环的底层原理,故事还得从字节码反汇编和反编译说起... 首先看一下Java JDK1.5的新特性 泛型: ... for-each. ... 自动拆箱和装箱功能 . ...

  7. Java SE 笔记(扩展篇)JDK 9-17 新特性介绍

    Java新特性介绍 **注意:**推荐完成此路线所有前置内容后,再来学习本篇. 经过前面的学习,我们基本已经了解了Java 8及之前的所有语法,不过,Java 8是Oracle 公司于 2014 年 ...

  8. Java 11将于本月25日发布,新特性一览

    作者:漫画编程 来源:漫画编程 2017年8月,JCP执行委员会提出将Java的发布频率改为每六个月一次.该决定将在Java 9正式发布之后开始实行. 2018年3月,Java 10如期而至.目前已经 ...

  9. php7 参数类型限定,PHP 7.2新特性:参数类型声明(附代码)

    php7.2版本具有新特性,功能和改进,可以让我们编写更好的代码,下面的文章中我将介绍php7.2中的一个新的功能:参数类型声明,话不多说,让我们来具体看看正文内容. 参数类型声明 从PHP 5开始, ...

最新文章

  1. 关于使用“JS获取屏幕,浏览器,网页高度宽度”的个人思考
  2. 深度学习核心技术精讲100篇(九)-Catboost算法原理解析及代码实现
  3. boost::compressed_sparse_row_graph用法的测试程序
  4. ajax中dom,在(jQuery)ajax请求中获取当前脚本DOM对象
  5. C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法,可通过重写WndProc来实现
  6. android 自定义桌面图标大小设置,手机桌面图标尺寸可以改?OriginOS重新定义个性化...
  7. 推荐一款配有强大数据管理和可视化ETL的BI工具
  8. 【HASH】【UVA 10125】 Sumset
  9. python怎么读取excel-python怎么从excel中读取数据?
  10. 麦迪逊大学计算机科学咋样,威斯康星大学麦迪逊分校计算机专业排名
  11. HDU-5889 Barricade
  12. Delphi 2010
  13. java数组排序方法
  14. 计算机怎么改鼠标标志,win10系统电脑的鼠标图标怎么修改
  15. 计算机每天定时开机设置方法,定时开机 (电脑自动开机) 设置方法
  16. 2019东北四省 H. Skyscraper (树状数组)
  17. 在R语言中如何打开一般方法打不开的中文xls文件?
  18. 苹果iOS开发者账号从零开始申请
  19. 黑马程序员武汉2019新版前端与移动开发学习路线图(视频+工具+书籍+资源)
  20. FindProxyForURL设置浏览器代理

热门文章

  1. str_replace函数详解
  2. c51时钟数码管显示流程图_电子元器件/数码管
  3. 微信公众号嵌入微吼直播视频
  4. 泛世纪上大量最新的录制课程啊。欢迎来下载
  5. python:初始化方法
  6. 图纸下发后更改零部件,不更改项目号其实很简单!
  7. 如何不让tomcat在启动时弹窗_Tomcat在SpringBoot中是如何启动的
  8. C1任务01-信息编码
  9. Many Website Of WallPaper
  10. 《区块链与通证》序言