精华内容
下载资源
问答
  • public class 测试类 {private int 年龄;...//变量首字母可以为下划线_或者美元符号_,不能以数字开头private String $变量2;public 测试类(int 年龄,String 名字,boolean 性别) {this.年龄 = 年龄;this.名字...

    public class 测试类 {

    private int 年龄;

    private String 名字;

    private boolean 性别;

    private String _变量1;//变量首字母可以为下划线_或者美元符号_,不能以数字开头

    private String $变量2;

    public 测试类(int 年龄,String 名字,boolean 性别) {

    this.年龄 = 年龄;

    this.名字= 名字;

    this.性别 = 性别;

    }

    public void 测试(String 测试参数) {

    System.out.println("我的测试参数是:" + 测试参数);

    System.out.println("我的姓名是:" + 名字);

    System.out.println("我的年龄是:" + 年龄);

    System.out.println("我的性别是:" + (性别 == true ? "男" : "女"));

    }

    public static void main(String... 可选参数) {

    测试类 测试实例 = new 测试类(20, "张三", true);

    测试实例.测试("原来中文可以这样使用啊!");

    }

    }

    打印结果:

    我的测试参数是:原来中文可以这样使用啊!

    我的姓名是:张三

    我的年龄是:20

    我的性别是:男

    展开全文
  • String 中文字符串对象 = "再试一个!"; System.out.println(中文字符串对象); System.out.println(VariableNameInChinese.说Hello("gfh")); } static public String 说Hello(String 名字) { return 名字+" 你好...

    package gfh.test;

    /**

    *

    Title:

    *

    Description: 转载请注明出处!

    *

    Copyright: Copyright (c) 2004

    *

    Company:

    * @author 顾法华,杭州

    * @version 1.0

    */

    public class VariableNameInChinese

    {

    public VariableNameInChinese()

    {

    super();

    }

    public static void main(String[] args)

    {

    int 整型变量 = 10;

    System.out.println(整型变量);

    String 中文字符串对象名 = "再试一个!";

    System.out.println(中文字符串对象名);

    System.out.println(VariableNameInChinese.说Hello("gfh"));

    }

    static public String 说Hello(String 名字)

    {

    return 名字+" 你好!";

    }

    }

    运行结果如下:

    10

    再试一个!

    gfh 你好!

    展开全文
  • 前言大家都知道随着java8的使用,在相应的方法签名中增加了新的对象Parameter,用于表示特定的参数信息,通过它的getName可以获取相应的参数名.即像在代码中编写的,如命名为username,那么在前台进行传参时,即不需要再...

    前言

    大家都知道随着java8的使用,在相应的方法签名中增加了新的对象Parameter,用于表示特定的参数信息,通过它的getName可以获取相应的参数名.即像在代码中编写的,如命名为username,那么在前台进行传参时,即不需要再编写如@Parameter("username")类的注解,而直接就能进行按名映射.

    如下的代码参考所示:

    public class T {

    private interface T2 {

    void method(String username, String password);

    }

    public static void main(String[] args) throws Exception {

    System.out.println(T.class.getMethod("main", String[].class).getParameters()[0].getName());

    System.out.println(T2.class.getMethod("method", String.class, String.class).getParameters()[0].getName());

    System.out.println(T2.class.getMethod("method", String.class, String.class).getParameters()[1].getName());

    }

    }

    按java8之前,也可以通过一些手段拿到参数名信息,只不过方式不同而已.如通过spring mvc中的ParameterMethodNameResolver在之前的版本中也可以正常工作.不过需要特别的编译而已.这里面起作用的即是 LocalVariableTable 和 MethodParameters,中文编译为本地变量表和方法参数表.

    LocalVariableTable 本地变量表

    按jvm规范所述,本地变量表存在于Code属性中,而Code属性即又是methodInfo的一个属性.可以理解为,当一个方法有方法体时,就会出现相应的Code属性,而且在code属性中,除具体的执行代码外,还会有其它的信息.如LineNumberTable(用于描述每一行代码所在的位置).

    本地变量表属于在方法中调试信息的一部分,因此默认情况下这些信息是不会生成在class文件当中的.需要开启 -g 或 -g:vars 开关.还好,对于ide或者是maven编译来说,这些开关都是默认开启的.在ide中,可以通过设置(generate debugging info 针对idea)来控制(默认打勾).在maven中,通过通过插件 maven-compiler-plugin 中的debug或debugLevel来控制是否输出(默认值是true).

    本地变量表在javap之后,如下所示:

    //非静态方法

    LocalVariableTable:

    Start Length Slot Name Signature

    0 1 0 this LT;

    0 1 1 count J

    0 1 3 name Ljava/lang/String;

    //静态方法

    LocalVariableTable:

    Start Length Slot Name Signature

    0 101 0 args [Ljava/lang/String;

    本地变量表不仅保存了参数信息,还保存在在整个方法体中可能会使用的临时变量,如声明的int i等.并且如上所示,表示方法和非静态方法,在第一位还有this变量的区别.因此,可以通过读取参数个数(method.getParameterCount),然后再根据方法签名,读取本地变量表中指定个数的参数信息即可.

    需要注意的是,在上图中,如果参数为long或double,其slot占位为2个,在通过slot来获取参数信息时,需要考虑参数的类型信息.

    接口方法由于没有code属性,因此也没有本地变量表,拿到一个接口的方法定义,通过本地变量表是不能获取到相应的参数名的

    MethodParameters 方法参数表

    方法参数表是在1.8之后引入的,因此只是使用jdk8编译生成的class文件才有此信息. 与本地变量表不同,它是属于MethodInfo属性的,即它是与Code属性同一级别的.不管是接口方法还是普通的方法,都是有此属性的.因此,即使是接口方法,也可以获取相应的参数信息.

    默认情况下,class中是没有此信息的.需要使用特殊的编译参数 -parameters 才能生成,并且在ide和maven中,也默认不会生成此信息.在idea中,需要在java additional line parameters中增加此编译参数.在maven中,也需要在maven-compiler-plugin的compilerArgs参数中增加此参数才行.

    方法参数表在javap之后,表现为如下形式:

    //非静态方法

    MethodParameters:

    Name Flags

    count

    name

    //静态方法

    MethodParameters:

    Name Flags

    args

    可以看出,无论是否静态,在参数表中,只会出现用于描述参数的信息.后面的Flags参数用于一些特殊的场景,比如final参数用于方法改写等.

    可使用的一些工具

    除使用原生的api,以及spring工具包,还有其它一些工具都可以拿到参数名信息.在spring体系中,用于描述参数名的接口为 ParameterNameDiscoverer.通过它可以获取相应的参数名信息. 除此之外, com.thoughtworks.paranamer:paranamer这一工具包中的Paranamer 也可以同样进行相应信息的处理. 不过对于jdk8的methodParameters支持度还不是很高,使用者可以通过扩展它来达到自己的目的.

    总结

    以上就是为大家总结的Java获取代码中方法参数名信息的方法,希望对大家学习或使用Java带来一定的帮助,如果有疑问大家可以留言交流。

    展开全文
  • 获取java代码中方法的参数名信息

    千次阅读 2021-03-08 18:12:45
    随着java8的使用,在相应的方法签名中增加了新的对象Parameter,用于表示特定的参数信息,通过它的getName可以获取相应的参数名.即像在代码中编写的,如命名为username,那么在前台进行传参时,即不需要再编写如@Parameter...

    随着java8的使用,在相应的方法签名中增加了新的对象Parameter,用于表示特定的参数信息,通过它的getName可以获取相应的参数名.即像在代码中编写的,如命名为username,那么在前台进行传参时,即不需要再编写如@Parameter("username")类的注解,而直接就能进行按名映射.

    如下的代码参考所示:

    按java8之前,也可以通过一些手段拿到参数名信息,只不过方式不同而已.如通过spring mvc中的ParameterMethodNameResolver在之前的版本中也可以正常工作.不过需要特别的编译而已.这里面起作用的即是 LocalVariableTable 和 MethodParameters,中文编译为本地变量表和方法参数表.

    LocalVariableTable 本地变量表

    按jvm规范所述,本地变量表存在于Code属性中,而Code属性即又是methodInfo的一个属性.可以理解为,当一个方法有方法体时,就会出现相应的Code属性,而且在code属性中,除具体的执行代码外,还会有其它的信息.如LineNumberTable(用于描述每一行代码所在的位置).

    本地变量表属于在方法中调试信息的一部分,因此默认情况下这些信息是不会生成在class文件当中的.需要开启 -g 或 -g:vars 开关.还好,对于ide或者是maven编译来说,这些开关都是默认开启的.在ide中,可以通过设置(generate debugging info 针对idea)来控制(默认打勾).在maven中,通过通过插件 maven-compiler-plugin 中的debug或debugLevel来控制是否输出(默认值是true).

    本地变量表在javap之后,如下所示:

    本地变量表不仅保存了参数信息,还保存在在整个方法体中可能会使用的临时变量,如声明的int i等.并且如上所示,表示方法和非静态方法,在第一位还有this变量的区别.因此,可以通过读取参数个数(method.getParameterCount),然后再根据方法签名,读取本地变量表中指定个数的参数信息即可.

    需要注意的是,在上图中,如果参数为long或double,其slot占位为2个,在通过slot来获取参数信息时,需要考虑参数的类型信息.

    接口方法由于没有code属性,因此也没有本地变量表,拿到一个接口的方法定义,通过本地变量表是不能获取到相应的参数名的

    MethodParameters 方法参数表

    方法参数表是在1.8之后引入的,因此只是使用jdk8编译生成的class文件才有此信息. 与本地变量表不同,它是属于MethodInfo属性的,即它是与Code属性同一级别的.不管是接口方法还是普通的方法,都是有此属性的.因此,即使是接口方法,也可以获取相应的参数信息.

    默认情况下,class中是没有此信息的.需要使用特殊的编译参数 -parameters 才能生成,并且在ide和maven中,也默认不会生成此信息.在idea中,需要在java additional line parameters中增加此编译参数.在maven中,也需要在maven-compiler-plugin的compilerArgs参数中增加此参数才行.

    方法参数表在javap之后,表现为如下形式:

    可以看出,无论是否静态,在参数表中,只会出现用于描述参数的信息.后面的Flags参数用于一些特殊的场景,比如final参数用于方法改写等.

    可使用的一些工具

    除使用原生的api,以及spring工具包,还有其它一些工具都可以拿到参数名信息.在spring体系中,用于描述参数名的接口为 ParameterNameDiscoverer.通过它可以获取相应的参数名信息. 除此之外, com.thoughtworks.paranamer:paranamer 这一工具包中的Paranamer 也可以同样进行相应信息的处理. 不过对于jdk8的methodParameters支持度还不是很高,使用者可以通过扩展它来达到自己的目的.

    相关文章:

    作者: flym

    I am flym,the master of the site:)查看flym的所有文章

    展开全文
  • 尽量post提交,不要问号拼接参数的方式,就不会乱码了原文:http://blog.csdn.net/wzygis/article/details/50964864在Java开发中,如果框架搭建的不完善或者初学者在学习过程中,出现中文乱码是经常的事儿(哈。...
  • 【填空题】任意长度的 Python 列表、元组和字符串中最后一...【填空题】Python 中定义函数的关键字是 _________________ , 在函数内部可以通过关键字 ________________ 来定义全局变量。【简答题】实例1:求两数相除...
  • 这里我们着重讨论参数传递的方式以及在 Golang 中函数调用前后(当然包括参数传递)对实参的影响。先了解一些基本概念。...实参可以是变量、数组、常数或者表达式。形式参数:简称形参,指出现在函数/方法形...
  • kron 张量积 详细说明help kron , 作分隔,如把矩阵元素、向量参数、函数参数、几个表达式分隔开来 ; (a)写在一个表达式后面时,运算后命令窗口中不显示表达式的计算结果 (b)在创建矩阵的语句中指示一行元素的...
  • 中文汉字会乱码 function getParameter(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i"); var r = location.search.substr(1).match(reg); if (r!=null) return (r[2]); return...
  • 原因:Http请求传输时将...方法一:我们需要把request.getParameter(“参数名”)获取到的字符串先ISO-8859-1编码成字节流,然后再将其utf-8解码成字符流。String str = new String(request.getParameter("参数名...
  • 最近在学习python著名的绘图包matplotlib时发现,有时候图例等设置无法正常显示中文,于是就想把这个问题解决了。PS:本文仅针对Windows,其他平台仅供参考。原因大致就是matplotlib库中没有中文字体。C:\Anaconda64...
  • Jenkins中参数使用

    2021-07-28 13:16:06
    在Jenkins中提供了很多参数类型,在此整理了一些常用的参数使用。 首先我们需要知道Jenkins中的参数需要在哪里进行设置, General——>This project is parameterized 当点击Add Parameterized时,会看到所有的...
  • 搜索热词最近在学习python著名的绘图包matplotlib时发现,有时候图例等设置无法正常显示中文,于是就想把这个问题解决了。PS:本文仅针对Windows,其他平台仅供参考。原因大致就是matplotlib库中没有中文字体。我...
  • bitsCN.commysql存储过程的参数名不要跟字段名一样如题,将会导致的结果就是参数的值将不会是你传入的值,而是变成每条记录的那个字段的值。这样的后果,是灰常严重的。比如执行删除操作,它能把整个表的记录全删了...
  • 2017-11-02 回答本文实例讲述了python读取命令行参数的方法。分享给大家供大家参考。...需要模块:sys参数个数:len(sys.argv)脚本: sys.argv[0]参数1: sys.argv[1]参数2: sys.argv[2]test.py:...
  • 在接受参数的页面获取值的时候: 会出现乱码: 解决方法: 在Tomcat的H:\tomcat7\apache-tomcat-7.0.108\conf目录下有个server.xml,添加: URIEncoding="utf-8" 然后保存重启Tomcat即可。 成功: ...
  • 不过总是出现乱码。开始的时候 改为nickname = new String(req.getParameter("nickname").getBytes("ISO8859-1"),"utf-8... 最后看到一篇解决乱码的文章,说是get传出 url中文参数的问题,必须先进过编码,然后接收...
  • 在超级链接中增加一个参数,参数名为NAME,参数值为=B2,如下图: 已完成模板请参照%FR_HOME%\WebReport\WEB-INF\rep...答:URL编码,通过QueryString传递,EnCode编码 DeCode解码。 ...
  • 一.jmeter进行参数化 方式1:通过CSV data set config ...多个变量之间必须分隔符分隔。如果该项为空,则文件首行会被读取并解析为列名列表 Ignore first line:是否忽略首行?如果csv文件中没有表头,则选择false
  • 解决办法:一, 我们需要把request.getParameter(“参数名”)获取到的字符串先ISO-8859-1编码成字节流,然后再将其utf-8解码成字符流,代码如下:String str = new String(request.getParameter("参数名").getBytes...
  • Java中方法参数使用

    2021-03-03 12:45:18
    Java中方法参数使用一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)一个方法可以改变一个对象参数状态一个方法不能让对象参数引用一个新的对象public class ParamTest {public static void tripleValue...
  • 比如有一个function()function find($conditions = null, $sort = null,..(很多参数).., $fields = null, $limit = null)现在我只要使用第一个和最后一个参数,一般都是find('xxx','','','',...,'xxx')很不好看,有...
  • 论坛等地方都要用到,也就是html语言中的textarea,textare包含有众多的参数,学会运用这些参数,就可以随意修改文本输入框的大小和外观,达到想要的效果,下面就来介绍这些参数,以及如何使用这些参数。1、cols,...
  • 【简答题】网页中的表单如何定义,通常表单中包含哪些元素?【填空题】JavaBean中用一组set方法设置Bean的私有属性值,...【判断题】JSP中可以声明基本类型和结构类型变量,但不能申明类,类必须放在JavaBean中。【简答...
  • 今天跟大家分享几个解决ava Web开发中,...第一种解决办法: 我们需要把request.getParameter(“参数名”)获取到的字符串先ISO-8859-1编码成字节流,然后再将其utf-8解码成字符流 代码: String str = new Str

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 399,094
精华内容 159,637
关键字:

参数名是否可以用中文