Most visited

Recently visited

Added in API level 1

方法

public final class Method
extends AccessibleObject implements GenericDeclaration, Member

java.lang.Object
   ↳ java.lang.reflect.AccessibleObject
     ↳ java.lang.reflect.Method


A 方法提供关于和访问类或接口上的单个方法的信息。 反射方法可以是类方法或实例方法(包括抽象方法)。

方法允许在将实际参数与基础方法的形式参数进行匹配时扩展转换,但如果发生缩小转换,则会引发 IllegalArgumentException

也可以看看:

Summary

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()

返回 Class表示声明此所表示的方法的类或接口对象 方法对象。

Object getDefaultValue()

返回此 方法实例所表示的注释成员的默认值。

Class[]<?> getExceptionTypes()

返回一个包含 Class对象的数组, Class对象表示声明为由此 方法对象表示的基础方法抛出的异常的类型。

Type[] getGenericExceptionTypes()

返回表示由此 方法对象声明要引发的异常的 Type对象的数组。

Type[] getGenericParameterTypes()

返回一个包含 Type对象的数组, Type对象以声明顺序表示此 方法对象表示的方法的形式参数类型。

Type getGenericReturnType()

返回一个 Type对象,它表示由该表示的方法的正式返回类型 方法对象。

int getModifiers()

以整数形式返回此 方法对象表示的方法的Java语言修饰符。

String getName()

返回此表示的方法的名称 方法对象,作为 String

Annotation[][] getParameterAnnotations()

返回一个数组数组,它表示按照声明顺序表示由此 方法对象表示的方法的形式参数的注释。

Class[]<?> getParameterTypes()

返回的数组 Class对象表示的形参类型,在声明顺序通过该表示的方法的 方法对象。

Class<?> getReturnType()

返回一个 Class对象,它表示由该表示的方法的正式返回类型 方法对象。

TypeVariable[]<方法> getTypeParameters()

以声明顺序 GenericDeclaration表示由此 GenericDeclaration对象表示的通用声明声明的类型变量的 TypeVariable对象数组。

int hashCode()

返回此 方法的哈希 方法

Object invoke(Object receiver, Object... args)

使用指定的参数在指定的对象上调用由此 方法对象表示的底层方法。

boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
boolean isBridge()

如果此方法是桥接方法,则返回true ; 否则返回false

boolean isDefault()

如果此方法是默认方法,则返回true ; 否则返回false

boolean isSynthetic()

如果此方法是一种合成方法,则返回true ; 否则返回false

boolean isVarArgs()

如果此方法被声明为接受可变数量的参数,则返回true ; 否则返回false

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

Fields

accessFlags

int accessFlags

编码访问的位(例如公共,私有)以及其他运行时特定的标志

declaringClass

Class<?> declaringClass

方法的声明类

declaringClassOfOverriddenMethod

Class<?> declaringClassOfOverriddenMethod

Overriden方法的声明类(与declaringClass相同,除非declaringClass是代理类)

dexMethodIndex

int dexMethodIndex

此方法的索引在其定义的dex文件中

Public methods

equals

Added in API level 1
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.

getAnnotation

Added in API level 1
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

getAnnotation

Added in API level 14
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

getAnnotations

Added in API level 1
Annotation[] getAnnotations ()

返回此元素上的所有注释。 (如果此元素没有注释,则返回长度为零的数组。)此方法的调用方可自由修改返回的数组; 它将不会影响返回给其他调用者的数组。

Returns
Annotation[] all annotations present on this element

getDeclaredAnnotations

Added in API level 1
Annotation[] getDeclaredAnnotations ()

返回直接出现在此元素上的所有注释。 与此接口中的其他方法不同,此方法会忽略继承的注释。 (如果此元素上没有注释,则返回长度为零的数组。)此方法的调用方可自由修改返回的数组; 它将不会影响返回给其他调用者的数组。

Returns
Annotation[] All annotations directly present on this element

getDeclaringClass

Added in API level 1
Class<?> getDeclaringClass ()

返回 Class表示声明此所表示的方法的类或接口对象 方法对象。

Returns
Class<?>

getDefaultValue

Added in API level 1
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.

getExceptionTypes

Added in API level 1
Class[]<?> getExceptionTypes ()

返回一个包含Class对象的数组, Class对象表示声明由此方法对象表示的基础方法抛出的异常的类型。 如果方法在其throws子句中声明无例外,则返回长度为0的数组。

Returns
Class[]<?> the exception types declared as being thrown by the method this object represents

getGenericExceptionTypes

Added in API level 1
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

getGenericParameterTypes

Added in API level 1
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

getGenericReturnType

Added in API level 1
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

getModifiers

Added in API level 1
int getModifiers ()

以整数形式返回此方法对象表示的方法的Java语言修饰符。 应该使用Modifier类来解码修饰符。

Returns
int

也可以看看:

getName

Added in API level 1
String getName ()

返回此表示的方法的名称 方法对象,作为 String

Returns
String the name of this method

getParameterAnnotations

Added in API level 1
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

getParameterTypes

Added in API level 1
Class[]<?> getParameterTypes ()

返回一个包含Class对象的数组, Class对象以声明顺序表示此方法对象表示的方法的形式参数类型。 如果基础方法不带参数,则返回长度为0的数组。

Returns
Class[]<?> the parameter types for the method this object represents

getReturnType

Added in API level 1
Class<?> getReturnType ()

返回一个 Class对象,它表示由该表示的方法的正式返回类型 方法对象。

Returns
Class<?> the return type for the method this object represents

getTypeParameters

Added in API level 1
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

hashCode

Added in API level 1
int hashCode ()

返回此方法的哈希方法 哈希码计算为基础方法的声明类名称和方法名称的排他性或哈希码。

Returns
int a hash code value for this object.

invoke

Added in API level 1
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.

isAnnotationPresent

Added in API level 1
boolean isAnnotationPresent (Class<? extends Annotation> annotationType)

Parameters
annotationType Class
Returns
boolean

isBridge

Added in API level 1
boolean isBridge ()

如果此方法是桥接方法,则返回true ; 否则返回false

Returns
boolean true if and only if this method is a bridge method as defined by the Java Language Specification.

isDefault

Added in API level 24
boolean isDefault ()

如果此方法是默认方法,则返回true ; 否则返回false

Returns
boolean

isSynthetic

Added in API level 1
boolean isSynthetic ()

如果此方法是一种合成方法,则返回true ; 否则返回false

Returns
boolean true if and only if this method is a synthetic method as defined by the Java Language Specification.

isVarArgs

Added in API level 1
boolean isVarArgs ()

如果声明此方法需要可变数量的参数,则返回true ; 否则返回false

Returns
boolean true if an only if this method was declared to take a variable number of arguments.

toGenericString

Added in API level 1
String toGenericString ()

返回描述此方法的字符串,包括类型参数。 该字符串被格式化为方法访问修饰符(如果有的话),然后是方括号的逗号分隔列表(如果有的话),后跟方法的通用返回类型,后跟一个空格,然后是类声明该方法后跟句点,后跟方法名称,后跟方括号的通用形式参数类型的逗号分隔列表。 如果此方法被声明为采用可变数量的参数,而不是将最后一个参数表示为“ Type[] ”,则表示为“ Type... ”。 空间用于将访问修饰符彼此分开,并与类型参数或返回类型分开。 如果没有类型参数,则省略类型参数列表; 如果类型参数列表存在,则空格将列表与类名称分开。 如果该方法被声明为引发异常,则参数列表后面跟着一个空格,后跟单词throws,后跟逗号分隔的通用抛出异常类型列表。 如果没有类型参数,则省略类型参数列表。

访问修饰符按照“Java语言规范”中的规定进行规范排列。 这是publicprotectedprivate以下顺序,然后再其它改性剂: abstractstaticfinalsynchronizednativestrictfp

Returns
String a string describing this 方法, include type parameters

toString

Added in API level 1
String toString ()

返回描述此方法的字符串。 该字符串被格式化为方法访问修饰符(如果有的话),接着是方法返回类型,后跟一个空格,接着是类声明方法,后跟一个句点,后跟方法名称,后跟括号逗号 - 方法的形式参数类型的分离列表。 如果该方法抛出检查异常,则参数列表后面跟着一个空格,接着是单词抛出,后跟抛出异常类型的逗号分隔列表。 例如:

    public boolean java.lang.Object.equals(java.lang.Object)
 

访问修饰符按照“Java语言规范”中的规定进行规范排列。 这是publicprotectedprivate以下顺序,然后再其它改性剂: abstractstaticfinalsynchronizednativestrictfp

Returns
String a string representation of the object.

Protected methods

compareParameters

int compareParameters (Class[]<?> params)

Parameters
params Class
Returns
int

equalMethodParameters

boolean equalMethodParameters (Class[]<?> params)

Parameters
params Class
Returns
boolean

Hooray!