Java 8——保存参数名称】的更多相关文章

一.详述 在很多情况下,程序需要保存方法参数名称,如Mybatis中的mapper和xml中sql的参数绑定.但是在java 8之前的编译器是不支持保存方法参数名至class文件中的. 所以很多框架都采用注解的形式,如Mybatis中采用@Param注解来保存参数名称,用于和xml中sql的参数占位匹配绑定. 但是经过强烈的愿望要求,java 8终于将这一特性引入进来.默认情况下,javac编译器编译时不会保存方法参数名称.在javac编译时增加"-parameters"参数即可: -…
原理 编译之后的class文件默认是不带有参数名称信息的,使用 IDE 时,反编译jar包得到的源代码函数参数名称是 arg0,arg1......这种形式,这是因为编译 jar 包的时候没有把符号表编译进去. JDK1.7 及以下版本的 API 并不能获取到函数的参数名称,需要使用字节码处理框架,如 ASM.javassist 等来实现,且需要编译器开启输出调试符号信息的参数的-g.这个过程简单描述就是: 编译器javac使用-g输出调试符号信息到class文件 程序通过字节码解析框架解析cl…
背景说明 最近写反射相关的代码,想获取对应的参数名称,却发现没有特别好的方式. jdk7 及其以前,是无法通过反射获取参数名称的. jdk8 可以获取,但是要求指定 -parameter 启动参数,限制较多. 期间尝试过类似于 Mybatis 使用 @Param 的方式,但是感觉不够优雅,后来发现了下面的这个工具. asm-tool 是基于 asm 构建的常见工具类. 下面简单介绍下使用方式. 快速开始 准备 jdk 1.7+ maven 3.x+ maven 引入 <dependency>…
原文来自: http://kenwublog.com/docs/java6-jvm-options-chinese-edition.htm 本文是基于最新的SUN官方文档Java SE 6 Hotspot VM Options 编写的译文.主要介绍JVM中的非稳态选项及其使用说明. 为了让读者明白每个选项的含义,作者在原文基础上补充了大量的资料.希望这份文档,对正在研究JVM参数的朋友有帮助! 非稳态选项使用说明 -XX:+<option> 启用选项 -XX:-<option> 不…
之前在交流群里和猿友们讨论string+和stringbuffer哪个速度快以及Java的方法参数传递的问题,引起了群里猿友的小讨论.最终LZ得出的结果是string+没有stringbuffer快,不过要看情况.而对于Java的方法参数传递问题,则是百年不变的答案,Java只有值传递. 有一位偏爱技术的猿友,问了LZ好几次这个问题,让LZ再解答一次.由于时间老是对不上,因此都没回复.这里LZ专门写篇博文来解释这个问题,到时候小黎同学来看一下吧. string+和stringbuffer的速度比…
Jni中C++和Java的参数传递 如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的例子 JNI入门教程之HelloWorld篇SUN JNI Tutorial 这些资料的例子中,大多数只是输入一些简单的参数,获取没有参数.而在实际的使用过程中,往往需要对参数进行处理转换.才可以被C/C++程序识别.比如我们在C++中有一个结构(Struct)Dis…
转:http://zzproc.iteye.com/blog/1328591 在阅读本文之前,根据自己的经验和理解,大家可以先思考并选择一下Java函数的参数传递方式:  A. 是按值传递的?  B. 按引用传递的?  C. 部分按值部分按引用?  此处暂不宣布正确答案,我们通过一个简单的例子让大家自己找答案:  1. 先定义一个类型Value public static class Value { private String value = "value"; public Stri…
在开发过程中Spring Mvc 默认 Url和参数名称都是区分大小写的 比如:www.a.com/user/getUserInfo?userId=1 www.a.com/user/getuserInfo?userId=1    www.a.com/user/getUserInfo?userid=1 www.a.com/user/getuserinfo?userid=1 这些都认为不同的地址和参数,在实际中用户根本不区分这些,所以我们要忽略大小写 URL忽略大小写 import org.spri…
在Java.J2EE大型应用中,JVM非标准参数的配置直接关系到整个系统的性能. JVM非标准参数指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置.但是在生产环境中,为了提高性能,往往需要调整这些参数,以求系统达到最佳新能. 另外这些参数的配置也是影响系统稳定性的一个重要因素,相信大多数Java开发人员都见过“OutOfMemory”类型的错误.呵呵,这其中很可能就是JVM参数配置不当或者就没有配置没意识到配置引起的.   为了说明这些参数,还需要说说JDK中的命令行…
到J2SE 1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数量和类型都必须逐一匹配,而形参的数目是在定义方法时就已经固定下来了.尽管可以通过重载机制,为同一个方法提供带有不同数量的形参的版本,但是这仍然不能达到让实参数量任意变化的目的. 然而,有些方法的语义要求它们必须能接受个数可变的实参——例如著名的main方法,就需要能接受所有的命令行参数为实参,而命令行参数的数目,事先根本无法确定下来. 对于这个问题…