getMethod
public Method getMethod(String name,
Class<?>... parameterTypes)
throws NoSuchMethodException,
SecurityException
返回一个 Method 对象,它反映此 Class
对象所表示的类或接口的指定公共成员方法。name 参数是一个
String,用于指定所需方法的简称。parameterTypes 参数是按声明顺序标识该方法形参类型的
Class 对象的一个数组。如果 parameterTypes 为
null,则按空数组处理。
如果 name 是 "<init>" 或
"<clinit>",则将引发
NoSuchMethodException。否则,要反映的方法由下面的算法确定(设 C 为此对象所表示的类):
在 C 中搜索任一匹配的方法。如果找不到匹配的方法,则将在 C 的超类上递归调用第 1 步算法。
如果在第 1 步中没有找到任何方法,则在 C 的超接口中搜索匹配的方法。如果找到了这样的方法,则反映该方法。
在 C
类中查找匹配的方法:如果 C 正好声明了一个具有指定名称的公共方法并且恰恰有相同的形参类型,则它就是反映的方法。如果在 C
中找到了多个这样的方法,并且其中有一个方法的返回类型比其他方法的返回类型都特殊,则反映该方法;否则将从中任选一个方法。
注意,类中可以有多个匹配方法,因为尽管 Java 语言禁止类声明带有相同签名但不同返回类型的多个方法,但 Java
虚拟机并不禁止。这增加了虚拟机的灵活性,可以用来实现各种语言特性。例如,可以使用桥方法 (brige
method)实现协变返回;桥方法以及将被重写的方法将具有相同的签名,不同的返回类型。
请参阅Java 语言规范 第 8.2 和 8.4 节。
参数:
name - 方法名
parameterTypes - 参数列表
返回:
与指定的 name 和 parameterTypes 匹配的 Method
对象
抛出:
NoSuchMethodException
- 如果找不到匹配的方法,或者方法名为 "<init>" 或 "<clinit>"
NullPointerException
- 如果 name 为 null
SecurityException -
如果存在安全管理器 s,并满足下列任一条件:
调用 s.checkMemberAccess(this,
Member.PUBLIC) 拒绝访问方法
调用者的类加载器不同于也不是当前类的类加载器的一个祖先,并且对 s.checkPackageAccess()
的调用拒绝访问该类的包
从以下版本开始:
JDK1.1
亲自试验也是抛出异常。说为null的全是想当然的答案。
我想你说的蓝色的应该是这样的吧?
绿色的应该是这样的吧?
两种注释的区别是:
蓝色的注释 一般是用在方法、接口、类、变量的注释上,用处就是当你鼠标移到这个方法、类、接口、变量上的时候,eclipse会展示出对应的注释。这样用的好处就是,封装好的方法(其余同理),别人通过注释就可以了解此方法的用途。
绿色的注释一般是写给自己或阅读这里代码的人看的,在别的地方是看不到注释的。比如你在类名上注释成绿色的,那么别人把鼠标移到此类上,就不会看到此类的注释。一般用在重要代码上的注释上,还有就是分支处理(if else switch case)时通常要加上,便于理解。
API中的某一个类是否会自动执行,这个没有理解你想要表达什么意思。
如果想知道此类是否存在引用,或者说有没有地方调用这个类或方法,你都可以双击选中此类名、方法名,然后按快捷键Ctrl + Shift + G来查看有无引用。
如果说类似于Activity的onCrete、View的onClick方法,这些都是回调方法,也就是说是抽象类里或接口里定义的方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)