首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

【小家java】java8新特性之---反射获取方法数名

方法的参数名,在很多时候我们是需要反射得到的。但是在java8之前,代码编译为class文件后,方法参数的类型是固定的,但参数名称却丢失了,这和动态语言严重依赖参数名称形成了鲜明对比。...(java是静态语言,所以入名称叫什么其实无所谓的)。虽然名称无所谓,但很多时候,我们需要此名称来做更好的安排....比如mybatis的Dao层接口方法,需要特意用个注解@Param来显示标识出参数名,当时写的时候我觉得挺傻X的一件事,所以java8来了,带来的新特性解决了这一问题 获取方法数名方法一:采用javassit...,调试时看到方法名称是通过jdk代理过的,拿不到参数名。...其实并不是,因为java8为了保持向下兼容,默认编译是不能获取到参数名称的。

1.1K40

Java获取函数参数名称的另一种方法

https://blog.csdn.net/10km/article/details/79308845 关于获取java 方法的参数名(这里指java 1.8以前的版本,java 1.8...已经提供了相关的原生方法),网上可以找到不少文章,这篇文章讲得比较全面了:《Java获取函数参数名称的几种方法》,无外乎是借用asm,javasist等第三方库。...我对axis2比较熟悉,知道axis2中在生成client代码时也需要获取方法的参数名,于是通过分析源码找到了axis2的实现代码。... * {@code name}为{@code null}时,获取构造函数的参数名 * @param name 方法名 * @param parameterTypes...ParameterNames.java 调用示例: private static void outputParameterNames(Method method){ // 抽象方法不能正确获取数名

84010

python笔记20-获取当前运行函数名

前言 写完代码之后,一般为了方便查看日志,可以在日志输出中加入当前运行的函数名称或类和方法名称,以便于代码报错的时候能快速找到报错的是哪个函数或方法。 那么如何获取当前运行函数(或方法)的名称呢?...获取数名称 1.在函数外部获取数名称,用.name获取 ? 2.函数内部获取当前函数名称,用sys._getframe().f_code.co_name方法获取 ?...类和方法名称获取 1.获取类名称self.class.name ? 2.获取类里面方法名称,跟获取数名称一样sys._getframe().f_code.co_name) ?...inspect模块 1.使用inspect模块动态获取当前运行的函数名(或方法名称) # coding:utf-8 import inspect def get__function_name():...'''获取正在运行函数(或方法)名称''' return inspect.stack()[1][3] def yoyo(): print("函数名称:%s"%get__function_name

2.3K10

Egg 获取路由传

Egg中获取路由传参与Koa差不多,主要的区别在于Egg中的控制器继承于Controller,所以在获取的时候要修改 this 的指向,下面用一个实例来说明如何获取路由传。...module.exports = app => { const { router, controller } = app; // 配置静态路由,指向controller文件夹下news.js文件里的index方法...router.get('/news', controller.news.index); // 配置动态路由,指向controller文件夹下的news.js文件里的detail方法...router.get('/detail/:id', controller.news.detail); }; 然后在 controller 中新建路由所对应的控制器文件 news.js,并在文件中添加路由所对应的方法...id: '123' } } } module.exports = NewsController; 以上就是在 Egg 中获取路由传方法,分别是 this.ctx.query 和 this.ctx.params

1.2K20

为何Spring MVC可获取方法数名,而MyBatis却不行?【享学Spring MVC】

:2 class java.lang.String----arg0 class java.lang.Integer----arg1 从结果中可以看到我们并不能获取到真实方法数名获取到的是无意义的arg0...控制台输出: fsx---18 从结果中可见:看似办不到的case,Spring MVC竟然给做到了(获取到了方法数名,进而完成封装),是不是有点不可思议???...---- 获取方法数名的3种方式介绍 虽然Java编译器默认情况下会抹去方法的参数名,但有上面介绍了字节码的相关知识可知,我们还是有方法来得到方法的参数名的。下面介绍3个方案,供以参考。...这是可以被理解的,因为接口方法不是实际方法,它的形名是会被实现类覆盖的,所以接口方法的形名意义不大~ Tips:接口上的default方法和static方法的参数名是可以被正常获取到的,有兴趣的小伙伴可以自己动手试试...因为抽象方法没有方法体,也就没有局部变量,自然也就没有局部变量表了,所以即使使用ASM也拿不到它的变量名~ 说明:在Java8后使用-parameter参数即使是接口,是可以直接通过Method获取到入名的

1.2K32

java:axis2环境下获取方法数名的另一种方法

java本身提供的方法不能获取方法的参数名的,只能获取每个参数的类型 比如: public String concatString(String param1,String param2){...关于获取方法的参数名字(不是参数类型),一般的做法是借助第三方包javassist或asm来实现。...参见下面的文章: java反射:使用asm 获取方法的参数名 javassist:增强型的java反照工具,获取方法数名 不过如果你的项目是基于axis2环境的,其实还有第三种方法: 我做基于...想到axis2在生成wsdl文件时需要获取方法的名字,所以我认为axis2的jar包中肯定有办法获取方法的参数名。于是研究了axis2 关于生成wsdl文件的相关代码,总算找到了,用法也很简单。...于是我根据自己的需要,基于ChainedParamReader写了这个下面这个类,来实现获取一般方法和构造方法的参数名

18720

js获取地址栏传

如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果文档已改变,reload() 会再次下载该文档。...如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。         ...如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。  ...console.log(window.location.toString()); 1 /** 2 * [getUrlParam 获取地址栏传] 3...* @param {[String]} paramname [参数名] 4 * @return {[String]} [参数值] 5 */

6K30

成员方法机制

目录 前言 基本数据类型传机制 引用数据类型传机制 成员方法的返回类型 总结 ---- 前言         方法机制非常重要,一定要搞的明明白白。...---- 基本数据类型传机制 分析下面的案例,看看结果会输出什么。...这到底是为什么,看下面的输出结果以及内存图总结 内存流程分析图: 结论:基本数据类型,传递的是值,形的任何改变不影响实参,所以在swap方法中交换了a和b的值,但不影响a和b在main方法中的值,也可以说...(注:sout表示输出语句) 输出结果: ---- 引用数据类型传机制 分析引用数据类型的传案例,看看会输出什么 public class MethodParameter02 { /...---- 总结 成员方法的传机制对今后的学习非常重要,必须要多做练习且多加思考传时内存中发生的变化。

55610
领券