资讯专栏INFORMATION COLUMN

java8 之 Java编译器的新特性

wangtdgoodluck / 2457人阅读

摘要:这个教程包含开发者经常面对的几类问题语言编译器库工具运行时编译器的新特性参数名称为了在运行时获得程序中方法的参数名称,老一辈的程序员必须使用不同方法,例如。

简介

毫无疑问,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,大家一起学习交流。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67791.html

相关文章

  • 在Android项目中使用Java8

    摘要:现在爸爸终于让平台支持了,这篇文章中便来和大家聊聊如何在项目中配置使用。要想在项目中使用的新特性,需要将你的升级到及以上版本,并采用新的编译。 转载请注明出处:https://zhuanlan.zhihu.com/p/23279894 前言 在过去的文章中我介绍过Java8的一些新特性,包括: Java8新特性第1章(Lambda表达式) Java8新特性第2章(接口默认方法) J...

    junnplus 评论0 收藏0
  • java8 新的Java工具

    简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本。这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。在本文中我们将学习这些新特性,并用实际的例子说明在什么场景下适合使用。 这个教程包含Java开发者经常面对的几类问题: 语言编译器库工具运行时(JVM)新的Java工具 Java 8提供了一些新的命令行工具,这部分会讲解一些对开发者最有用的工具...

    sourcenode 评论0 收藏0
  • Ummm... Java8和lambda

    摘要:引入了与此前完全不同的函数式编程方法,通过表达式和来为下的函数式编程提供动力。命令式编程语言把对象变量和流转当作一等公民,而函数式编程在此基础上加入了策略变量这一新的一等公民。 Java8引入了与此前完全不同的函数式编程方法,通过Lambda表达式和StreamAPI来为Java下的函数式编程提供动力。本文是Java8新特性的第一篇,旨在阐释函数式编程的本义,更在展示Java是如何通...

    LMou 评论0 收藏0
  • 千呼万唤始出来 Java8发布

    摘要:跳票之王终于发布了带来了一系列激动人心的新特性,包括新的时间日期,以及和,在多线程环境下性能提升不少。 跳票之王Java8终于发布了! Java8带来了一系列激动人心的新特性,包括lambda、新的时间日期AOPI,以及AtomicInteger和AtomicLong,在多线程环境下性能提升不少。 showImg(http://segmentfault.com/img/bVb0D2...

    lx1036 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<