public final class Method
extends AccessibleObject
implements GenericDeclaration, Member
java.lang.Object | ||
↳ | java.lang.reflect.AccessibleObject | |
↳ | java.lang.reflect.Method |
A 方法
提供关于和访问类或接口上的单个方法的信息。 反射方法可以是类方法或实例方法(包括抽象方法)。
方法
允许在将实际参数与基础方法的形式参数进行匹配时扩展转换,但如果发生缩小转换,则会引发 IllegalArgumentException
。
也可以看看:
Inherited constants |
---|
From interface java.lang.reflect.Member
|
Fields |
|
---|---|
protected int |
accessFlags 编码访问的位(例如, |
protected Class<?> |
declaringClass 方法的声明类 |
protected Class<?> |
declaringClassOfOverriddenMethod Overriden方法的声明类(与declaringClass相同,除非declaringClass是代理类) |
protected int |
dexMethodIndex 此方法的索引在其定义的dex文件中 |
Public methods |
|
---|---|
boolean |
equals(Object obj) 将此 |
<T extends Annotation> T |
getAnnotation(Class<T> annotationClass) 如果存在这样的注释,则返回指定类型的此元素的注释,否则返回null。 |
<A extends Annotation> A |
getAnnotation(Class<A> annotationType) 如果存在这样的注释,则返回指定类型的此元素的注释,否则返回null。 |
Annotation[] |
getAnnotations() 返回此元素上的所有注释。 |
Annotation[] |
getDeclaredAnnotations() 返回直接出现在此元素上的所有注释。 |
Class<?> |
getDeclaringClass() 返回 |
Object |
getDefaultValue() 返回此 |
Class[]<?> |
getExceptionTypes() 返回一个包含 |
Type[] |
getGenericExceptionTypes() 返回表示由此 |
Type[] |
getGenericParameterTypes() 返回一个包含 |
Type |
getGenericReturnType() 返回一个 |
int |
getModifiers() 以整数形式返回此 |
String |
getName() 返回此表示的方法的名称 |
Annotation[][] |
getParameterAnnotations() 返回一个数组数组,它表示按照声明顺序表示由此 |
Class[]<?> |
getParameterTypes() 返回的数组 |
Class<?> |
getReturnType() 返回一个 |
TypeVariable[]<方法> |
getTypeParameters() 以声明顺序 |
int |
hashCode() 返回此 |
Object |
invoke(Object receiver, Object... args) 使用指定的参数在指定的对象上调用由此 |
boolean |
isAnnotationPresent(Class<? extends Annotation> annotationType) |
boolean |
isBridge() 如果此方法是桥接方法,则返回 |
boolean |
isDefault() 如果此方法是默认方法,则返回 |
boolean |
isSynthetic() 如果此方法是一种合成方法,则返回 |
boolean |
isVarArgs() 如果此方法被声明为接受可变数量的参数,则返回 |
String |
toGenericString() 返回描述此 |
String |
toString() 返回描述此 |
Protected methods |
|
---|---|
int |
compareParameters(Class[]<?> params) |
boolean |
equalMethodParameters(Class[]<?> params) |
Inherited methods |
|
---|---|
From class java.lang.reflect.AccessibleObject
|
|
From class java.lang.Object
|
|
From interface java.lang.reflect.AnnotatedElement
|
|
From interface java.lang.reflect.GenericDeclaration
|
|
From interface java.lang.reflect.Member
|
int accessFlags
编码访问的位(例如公共,私有)以及其他运行时特定的标志
Class<?> declaringClassOfOverriddenMethod
Overriden方法的声明类(与declaringClass相同,除非declaringClass是代理类)
int dexMethodIndex
此方法的索引在其定义的dex文件中
boolean equals (Object obj)
将此方法
与指定的对象进行比较。 如果对象相同,则返回true。 如果两个Methods
由同一个类声明并具有相同的名称和形式参数类型以及返回类型,那么它们是相同的。
Parameters | |
---|---|
obj |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if this object is the same as the obj argument; false otherwise. |
T getAnnotation (Class<T> annotationClass)
如果存在这样的注释,则返回指定类型的此元素的注释,否则返回null。
Parameters | |
---|---|
annotationClass |
Class : the Class object corresponding to the annotation type |
Returns | |
---|---|
T |
this element's annotation for the specified annotation type if present on this element, else null |
A getAnnotation (Class<A> annotationType)
如果存在这样的注释,则返回指定类型的此元素的注释,否则返回null。
Parameters | |
---|---|
annotationType |
Class : the Class object corresponding to the annotation type |
Returns | |
---|---|
A |
this element's annotation for the specified annotation type if present on this element, else null |
Throws | |
---|---|
NullPointerException |
Annotation[] getAnnotations ()
返回此元素上的所有注释。 (如果此元素没有注释,则返回长度为零的数组。)此方法的调用方可自由修改返回的数组; 它将不会影响返回给其他调用者的数组。
Returns | |
---|---|
Annotation[] |
all annotations present on this element |
Annotation[] getDeclaredAnnotations ()
返回直接出现在此元素上的所有注释。 与此接口中的其他方法不同,此方法会忽略继承的注释。 (如果此元素上没有注释,则返回长度为零的数组。)此方法的调用方可自由修改返回的数组; 它将不会影响返回给其他调用者的数组。
Returns | |
---|---|
Annotation[] |
All annotations directly present on this element |
Class<?> getDeclaringClass ()
返回 Class
表示声明此所表示的方法的类或接口对象 方法
对象。
Returns | |
---|---|
Class<?> |
Object getDefaultValue ()
返回此方法
实例所表示的注释成员的默认值。 如果该成员是原始类型,则返回相应包装器类型的实例。 如果没有默认值与成员关联,或者如果方法实例不表示注释类型的声明成员,则返回null。
Returns | |
---|---|
Object |
the default value for the annotation member represented by this 方法 instance. |
Throws | |
---|---|
TypeNotPresentException |
if the annotation is of type Class and no definition can be found for the default class value. |
Class[]<?> getExceptionTypes ()
返回一个包含Class
对象的数组, Class
对象表示声明由此方法
对象表示的基础方法抛出的异常的类型。 如果方法在其throws
子句中声明无例外,则返回长度为0的数组。
Returns | |
---|---|
Class[]<?> |
the exception types declared as being thrown by the method this object represents |
Type[] getGenericExceptionTypes ()
返回表示由此方法
对象声明要引发的异常的Type
对象的数组。 如果基础方法的throws
子句中未声明任何例外,则返回长度为0的数组。
如果异常类型是类型变量或参数化类型,则会创建它。 否则,它已解决。
Returns | |
---|---|
Type[] |
an array of Types that represent the exception types thrown by the underlying method |
Throws | |
---|---|
GenericSignatureFormatError |
if the generic method signature does not conform to the format specified in The Java™ Virtual Machine Specification |
TypeNotPresentException |
if the underlying method's throws clause refers to a non-existent type declaration |
MalformedParameterizedTypeException |
if the underlying method's throws clause refers to a parameterized type that cannot be instantiated for any reason |
Type[] getGenericParameterTypes ()
返回一个包含Type
对象的数组, Type
对象以声明顺序表示此方法
对象表示的方法的形式参数类型。 如果基础方法不带参数,则返回长度为0的数组。
如果形式参数类型是参数化类型,则 Type
返回的 Type
对象必须准确反映源代码中使用的实际类型参数。
如果形式参数类型是类型变量或参数化类型,则会创建它。 否则,它已解决。
Returns | |
---|---|
Type[] |
an array of Types that represent the formal parameter types of the underlying method, in declaration order |
Throws | |
---|---|
GenericSignatureFormatError |
if the generic method signature does not conform to the format specified in The Java™ Virtual Machine Specification |
TypeNotPresentException |
if any of the parameter types of the underlying method refers to a non-existent type declaration |
MalformedParameterizedTypeException |
if any of the underlying method's parameter types refer to a parameterized type that cannot be instantiated for any reason |
Type getGenericReturnType ()
返回一个 Type
对象,它表示由该表示的方法的正式返回类型 方法
对象。
如果返回类型是参数化类型,则返回的 Type
对象必须准确反映源代码中使用的实际类型参数。
如果返回类型是类型变量或参数化类型,则会创建它。 否则,它已解决。
Returns | |
---|---|
Type |
a Type object that represents the formal return type of the underlying method |
Throws | |
---|---|
GenericSignatureFormatError |
if the generic method signature does not conform to the format specified in The Java™ Virtual Machine Specification |
TypeNotPresentException |
if the underlying method's return type refers to a non-existent type declaration |
MalformedParameterizedTypeException |
if the underlying method's return typed refers to a parameterized type that cannot be instantiated for any reason |
int getModifiers ()
以整数形式返回此方法
对象表示的方法的Java语言修饰符。 应该使用Modifier
类来解码修饰符。
Returns | |
---|---|
int |
也可以看看:
String getName ()
返回此表示的方法的名称 方法
对象,作为 String
。
Returns | |
---|---|
String |
the name of this method |
Annotation[][] getParameterAnnotations ()
返回一个数组数组,该数组表示由此方法
对象表示的方法的声明顺序形式参数的注释。 (如果底层方法是无参数的,则返回一个长度为零的数组。如果该方法有一个或多个参数,则为每个参数返回一个长度为零的嵌套数组,无需注释)。返回数组中包含的注释对象是可序列化的。 此方法的调用者可以自由修改返回的数组; 它将不会影响返回给其他调用者的数组。
Returns | |
---|---|
Annotation[][] |
an array of arrays that represent the annotations on the formal parameters, in declaration order, of the method represented by this Method object |
Class[]<?> getParameterTypes ()
返回一个包含Class
对象的数组, Class
对象以声明顺序表示此方法
对象表示的方法的形式参数类型。 如果基础方法不带参数,则返回长度为0的数组。
Returns | |
---|---|
Class[]<?> |
the parameter types for the method this object represents |
Class<?> getReturnType ()
返回一个 Class
对象,它表示由该表示的方法的正式返回类型 方法
对象。
Returns | |
---|---|
Class<?> |
the return type for the method this object represents |
TypeVariable[]<方法> getTypeParameters ()
以声明顺序GenericDeclaration
表示由此GenericDeclaration
对象表示的通用声明声明的类型变量的TypeVariable
对象数组。 如果基础泛型声明声明没有类型变量,则返回长度为0的数组。
Returns | |
---|---|
TypeVariable[]<方法> |
an array of TypeVariable objects that represent the type variables declared by this generic declaration |
Throws | |
---|---|
GenericSignatureFormatError |
if the generic signature of this generic declaration does not conform to the format specified in The Java™ Virtual Machine Specification |
int hashCode ()
返回此方法
的哈希方法
。 哈希码计算为基础方法的声明类名称和方法名称的排他性或哈希码。
Returns | |
---|---|
int |
a hash code value for this object. |
Object invoke (Object receiver, Object... args)
使用指定的参数在指定对象上调用此方法
对象表示的底层方法。 单个参数会自动解包以匹配原始形式参数,并且必要时,原始参数和参考参数都会受方法调用转换的影响。
如果底层方法是静态的,那么指定的obj
参数将被忽略。 它可能为空。
如果底层方法所需的形式参数数量为0,则提供的 args
数组可能长度为0或为空。
如果底层方法是实例方法,则使用动态方法查找来调用该方法,如“Java语言规范第二版”第15.12.4.4节中所述; 特别是基于目标对象的运行时类型的覆盖将发生。
如果基础方法是静态的,那么声明该方法的类如果尚未初始化,则会初始化。
如果方法正常完成,它返回的值将返回给invoke的调用者; 如果该值具有基元类型,则首先将其适当包装在一个对象中。 但是,如果该值具有基元类型数组的类型,则该数组的元素不会包含在对象中; 换句话说,返回一个原始类型的数组。 如果基础方法返回类型为void,则调用返回null。
Parameters | |
---|---|
receiver |
Object : the object the underlying method is invoked from |
args |
Object : the arguments used for the method call |
Returns | |
---|---|
Object |
the result of dispatching the method represented by this object on obj with parameters args |
Throws | |
---|---|
IllegalAccessException |
if this 方法 object is enforcing Java language access control and the underlying method is inaccessible. |
IllegalArgumentException |
if the method is an instance method and the specified object argument is not an instance of the class or interface declaring the underlying method (or of a subclass or implementor thereof); if the number of actual and formal parameters differ; if an unwrapping conversion for primitive arguments fails; or if, after possible unwrapping, a parameter value cannot be converted to the corresponding formal parameter type by a method invocation conversion. |
InvocationTargetException |
if the underlying method throws an exception. |
NullPointerException |
if the specified object is null and the method is an instance method. |
ExceptionInInitializerError |
if the initialization provoked by this method fails. |
boolean isAnnotationPresent (Class<? extends Annotation> annotationType)
Parameters | |
---|---|
annotationType |
Class
|
Returns | |
---|---|
boolean |
boolean isBridge ()
如果此方法是桥接方法,则返回true
; 否则返回false
。
Returns | |
---|---|
boolean |
true if and only if this method is a bridge method as defined by the Java Language Specification. |
boolean isDefault ()
如果此方法是默认方法,则返回true
; 否则返回false
。
Returns | |
---|---|
boolean |
boolean isSynthetic ()
如果此方法是一种合成方法,则返回true
; 否则返回false
。
Returns | |
---|---|
boolean |
true if and only if this method is a synthetic method as defined by the Java Language Specification. |
boolean isVarArgs ()
如果声明此方法需要可变数量的参数,则返回true
; 否则返回false
。
Returns | |
---|---|
boolean |
true if an only if this method was declared to take a variable number of arguments. |
String toGenericString ()
返回描述此方法
的字符串,包括类型参数。 该字符串被格式化为方法访问修饰符(如果有的话),然后是方括号的逗号分隔列表(如果有的话),后跟方法的通用返回类型,后跟一个空格,然后是类声明该方法后跟句点,后跟方法名称,后跟方括号的通用形式参数类型的逗号分隔列表。 如果此方法被声明为采用可变数量的参数,而不是将最后一个参数表示为“ Type[] ”,则表示为“ Type... ”。 空间用于将访问修饰符彼此分开,并与类型参数或返回类型分开。 如果没有类型参数,则省略类型参数列表; 如果类型参数列表存在,则空格将列表与类名称分开。 如果该方法被声明为引发异常,则参数列表后面跟着一个空格,后跟单词throws,后跟逗号分隔的通用抛出异常类型列表。 如果没有类型参数,则省略类型参数列表。
访问修饰符按照“Java语言规范”中的规定进行规范排列。 这是public
, protected
或private
以下顺序,然后再其它改性剂: abstract
, static
, final
, synchronized
, native
, strictfp
。
Returns | |
---|---|
String |
a string describing this 方法 , include type parameters |
String toString ()
返回描述此方法
的字符串。 该字符串被格式化为方法访问修饰符(如果有的话),接着是方法返回类型,后跟一个空格,接着是类声明方法,后跟一个句点,后跟方法名称,后跟括号逗号 - 方法的形式参数类型的分离列表。 如果该方法抛出检查异常,则参数列表后面跟着一个空格,接着是单词抛出,后跟抛出异常类型的逗号分隔列表。 例如:
public boolean java.lang.Object.equals(java.lang.Object)
访问修饰符按照“Java语言规范”中的规定进行规范排列。 这是public
, protected
或private
以下顺序,然后再其它改性剂: abstract
, static
, final
, synchronized
, native
, strictfp
。
Returns | |
---|---|
String |
a string representation of the object. |
boolean equalMethodParameters (Class[]<?> params)
Parameters | |
---|---|
params |
Class
|
Returns | |
---|---|
boolean |