
一、从注解中获取
使用注解方式,我们需要自定义一个注解,在注解中指定参数名,然后通过反射机制,获取方法参数上的注解,从而获取到相应的注解信息。这里自定义的注解是Param,通过value参数指定参数名,定义了一个工具类ParameterNameUtils来获取指定方法的参数名列表,这里获取测试类ParameterNameTest中定义的方法method1的参数名列表表,下面是具体的代码。
Foible 朋友的说法不对。
B b=new B(); 这种方式,实际上是实例化了子类的对象,注意:内存中还是子类对象。
((A)b)m(); 表面上看起来是父类对象了,但是由于内存中是子类对象,所以调用的还是子类方法。
A b=new B();
bm();
这种方法和你写的实际是一个效果,虽然上溯造型到了父类,由于子类重写了父类的方法,调用的还是子类的方法(也就是所:方法的实现,最后是在子类中实现的)。
所以,总结如下:
如果子类没有重写父类的方法,调用父类的方法的时候,实际上是去父类的内存中实现,可以调用父类方法。
如果子类重写了父类的方法,那么,你虽然上溯造型到了父类,由于内存还是子类,该方法的实现还是在子类,所以用实例化的对象是调用不到父类的,这种情况下,只能用super关键字。
用static的情况不讨论的情况下不讨论是这样的,不知道到您是否不满意,不满意的话可以发消息继续讨论。
//打印类对象的所有方法
- (void)printMethodNamesOfClass:(Class) cls {
unsignedintcount;
//获取方法数组
MethodmethodList =class_copyMethodList(cls, &count);
//存储方法名
NSMutableString methodNames = [NSMutableString string];
//遍历所有的方法
for(inti =0; i < count; i++) {
//获得方法
Methodmethod = methodList[i];
//获得方法名
NSStringmethodName =NSStringFromSelector(method_getName(method));
//拼接方法名
[methodNamesappendString:methodName];
[methodNamesappendString:@", "];
}
//释放
free(methodList);
//打印方法名
NSLog(@"%@ %@",cls,methodNames);
}
以上就是关于Java如何获取方法参数中的名称全部的内容,包括:Java如何获取方法参数中的名称、Java 如何在方法运行时获得当前方法的Method(实例)、打印类对象的所有方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)