Класс Method

Все реализованные интерфейсы:
AnnotatedElement, GenericDeclaration, Member
public final class Method
extends Executable

Объект Method предоставляет информацию о и доступ к отдельному методу класса или интерфейса. Отражённый метод может быть классовым или экземпляром метода (включая абстрактный метод).

Объект Method позволяет производить расширяющие преобразования при сопоставлении фактических параметров с вызовом формальных параметров основного метода, но он выбрасывает исключение IllegalArgumentException, если произойдет сужающее преобразование.

С момента:
1.1
См. также:
Member, Class, Class.getMethods(), Class.getMethod(String, Class[]), Class.getDeclaredMethods(), Class.getDeclaredMethod(String, Class[])

Поля

Поля, объявленные в интерфейсе java.lang.reflect.Member

DECLARED, PUBLIC

Методы

Модификатор и тип Метод Описание
boolean equals​(Object obj)

Сравнивает этот Method с указанным объектом.

AnnotatedType getAnnotatedReturnType()

Возвращает объект AnnotatedType, который представляет использование типа для указания типа возвращаемого значения метода/конструктора, представленного этим объектом Executable.

<T extends Annotation>
T
getAnnotation​(Class<T> annotationClass)

Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null.

Annotation[] getDeclaredAnnotations()

Возвращает аннотации, которые непосредственно присутствуют на этом элементе.

Class<?> getDeclaringClass()

Возвращает объект Class, представляющий класс или интерфейс, который объявляет метод, представленный этим объектом.

Object getDefaultValue()

Возвращает значение по умолчанию для члена аннотации, представленного этим экземпляром Method.

Type[] getGenericExceptionTypes()

Возвращает массив объектов Type, представляющих исключения, объявленные для бросания этим объектом исполняемого кода.

Type[] getGenericParameterTypes()

Возвращает массив объектов Type, представляющих типы формальных параметров, в порядке объявления, исполняемого кода, представленного этим объектом.

Type getGenericReturnType()

Возвращает объект Type, который представляет формальный тип возвращаемого значения метода, представленного этим объектом Method.

String getName()

Возвращает имя метода, представленного этим объектом Method, как строку.

Annotation[][] getParameterAnnotations()

Возвращает массив массивов аннотаций формальных параметров, в порядке объявления, для исполняемого кода, представленного этим объектом.

int getParameterCount()

Возвращает количество формальных параметров (явно, неявно или ни то, ни другое) для исполняемого кода, представленного этим объектом.

Class<?> getReturnType()

Возвращает объект Class, представляющий формальный тип возвращаемого значения метода, представленного этим объектом Method.

TypeVariable<Method>[] getTypeParameters()

Возвращает массив объектов TypeVariable, представляющих переменные типов, объявленные в общем объявлении, представленном этим объектом GenericDeclaration, в порядке объявления.

int hashCode()

Возвращает хэш-код для этого Method.

Object invoke​(Object obj, Object... args)

Вызывает представленный этим объектом Method метод на указанном объекте с указанными параметрами.

boolean isBridge()

Возвращает true, если этот метод является мостовым методом; возвращает false в противном случае.

boolean isDefault()

Возвращает true, если этот метод является методом по умолчанию; возвращает false в противном случае.

boolean isSynthetic()

Возвращает true, если этот исполняемый код является синтетической конструкцией; возвращает false в противном случае.

boolean isVarArgs()

Возвращает true, если этот исполняемый код был объявлен с переменным числом аргументов; возвращает false в противном случае.

void setAccessible​(boolean flag)

Устанавливает флаг accessible для этого отражённого объекта в указанное булево значение.

String toGenericString()

Возвращает строку, описывающую этот Method, включая параметры типа.

String toString()

Возвращает строку, описывающую этот Method.

Методы, объявленные в классе java.lang.reflect.Executable

getAnnotatedExceptionTypes, getAnnotatedParameterTypes, getAnnotatedReceiverType, getAnnotationsByType, getExceptionTypes, getModifiers, getParameters, getParameterTypes

Методы, объявленные в классе java.lang.reflect.AccessibleObject

canAccess, getAnnotations, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAccessible, isAnnotationPresent, setAccessible, trySetAccessible

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Методы, объявленные в интерфейсе java.lang.reflect.AnnotatedElement

getAnnotations, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAnnotationPresent

Методы

setAccessible

public void setAccessible(boolean flag)

Описание скопировано из класса: AccessibleObject

Установите флаг accessible для этого отражённого объекта на указанное булево значение. Значение true указывает, что отражённый объект должен подавлять проверки контроля доступа языка Java при его использовании. Значение false указывает, что отражённый объект должен применять проверки контроля доступа языка Java при его использовании, с вариациями, отмеченными в описании класса.

Этот метод может использоваться вызывающим объектом в классе C для включения доступа к member объекта declaring class D при выполнении следующих условий:

  • C и D находятся в одном модуле.
  • Член является public и D находится в пакете, к которому модуль, содержащий D exports экспортирует по крайней мере в модуль, содержащий C.
  • Член является protected static, D находится в пакете, к которому модуль, содержащий D экспортирует по крайней мере в модуль, содержащий C, и C является подклассом D.
  • D находится в пакете, к которому модуль, содержащий D opens экспортирует по крайней мере в модуль, содержащий C. Все пакеты в безымянных и открытых модулях открыты для всех модулей, поэтому этот метод всегда выполняется успешно, когда D находится в безымянном или открытом модуле.

Этот метод не может быть использован для включения доступа к закрытым членам, членам с доступом по умолчанию (пакетным), защищённым экземплярам-членам или защищённым конструкторам, когда класс-объявитель находится в другом модуле, чем вызывающий объект, и пакет, содержащий класс-объявитель, не открыт для модуля вызывающего объекта.

Если существует менеджер безопасности, его метод checkPermission сначала вызывается с разрешением ReflectPermission("suppressAccessChecks").

Overrides:
setAccessible в классе AccessibleObject
Параметры:
flag - новое значение флага accessible
Исключения:
InaccessibleObjectException - если доступ не может быть включён
SecurityException - если запрос отклоняется менеджером безопасности
См. также:
AccessibleObject.trySetAccessible(), MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)

getDeclaringClass

public Class<?> getDeclaringClass()

Возвращает объект Class представляющий класс или интерфейс, объявляющий метод, представленный этим объектом.

Определено в:
getDeclaringClass в интерфейсе Member
Определено в:
getDeclaringClass в классе Executable
Возвращает:
объект, представляющий объявляющий класс базового члена

getName

public String getName()

Возвращает имя метода, представленного этим объектом Method, как String.

Определено в:
getName в интерфейсе Member
Определено в:
getName в классе Executable
Возвращает:
простое имя базового члена

getTypeParameters

public TypeVariable<Method>[] getTypeParameters()

Возвращает массив объектов TypeVariable , представляющих тип переменных, объявленных общим объявлением, представленным этим объектом GenericDeclaration, в порядке объявления. Возвращает массив длины 0, если базовое общее объявление не объявляет никаких типов переменных.

Определено в:
getTypeParameters в интерфейсе GenericDeclaration
Определено в:
getTypeParameters в классе Executable
Возвращает:
массив объектов TypeVariable , представляющих тип переменных, объявленных этим общим объявлением
Исключения:
GenericSignatureFormatError - если общее подпись этого общего объявления не соответствует формату, указанному в Спецификации виртуальной машины Java™
С тех пор:
1.5

getReturnType

public Class<?> getReturnType()

Возвращает объект Class , представляющий формальный возвращаемый тип метода, представленного этим объектом Method.

Возвращает:
тип возврата для метода, представленного этим объектом

getGenericReturnType

public Type getGenericReturnType()

Возвращает объект Type , представляющий формальный возвращаемый тип метода, представленного этим объектом Method.

Если тип возврата является параметризованным типом, объект Type , возвращённый, должен точно отражать фактические параметры типа, используемые в исходном коде.

Если тип возврата является переменной типа или параметризованным типом, он создаётся. В противном случае он разрешается.

Возвращает:
объект Type , представляющий формальный возвращаемый тип базового метода
Исключения:
GenericSignatureFormatError - если общая сигнатура метода не соответствует формату, указанному в Спецификации виртуальной машины Java™
TypeNotPresentException - если возвращаемый тип базового метода ссылается на не существующее объявление типа
MalformedParameterizedTypeException - если возвращаемый тип базового метода ссылается на параметризованный тип, который не может быть создан по какой-либо причине
С тех пор:
1.5

getParameterCount

public int getParameterCount()

Возвращает количество формальных параметров (явных, неявных или ни тех, ни других) для исполняемого, представленного этим объектом.

Overrides:
getParameterCount в классе Executable
Возвращает:
Количество формальных параметров для исполняемого, представленного этим объектом
С тех пор:
1.8

getGenericParameterTypes

public Type[] getGenericParameterTypes()

Возвращает массив объектов Type , представляющих формальные типы параметров, в порядке объявления, исполняемого, представленного этим объектом. Возвращает массив длины 0, если базовый исполняемый объект не принимает параметров.

Если формальный тип параметра является параметризованным типом, объект Type , возвращённый для него, должен точно отражать фактические параметры типа, используемые в исходном коде.

Если формальный тип параметра является переменной типа или параметризованным типом, он создаётся. В противном случае он разрешается.

Overrides:
getGenericParameterTypes в классе Executable
Возвращает:
массив Type , представляющих формальные типы параметров базового исполняемого объекта, в порядке объявления
Исключения:
GenericSignatureFormatError - если общая сигнатура метода не соответствует формату, указанному в Спецификации виртуальной машины Java™
TypeNotPresentException - если любой из типов параметров базового исполняемого объекта ссылается на не существующее объявление типа
MalformedParameterizedTypeException - если любой из типов параметров базового исполняемого объекта ссылается на параметризованный тип, который не может быть создан по какой-либо причине
С тех пор:
1.5

getGenericExceptionTypes

public Type[] getGenericExceptionTypes()

Возвращает массив объектов Type , представляющих исключения, объявленные для выбрасывания этим объектом исполняемого кода. Возвращает массив длины 0, если базовый исполняемый объект не объявляет никаких исключений в своей части throws.

Если тип исключения является переменной типа или параметризованным типом, он создаётся. В противном случае он разрешается.

Overrides:
getGenericExceptionTypes в классе Executable
Возвращает:
массив типов, представляющих типы исключений, выбрасываемых базовым исполняемым объектом
Исключения:
GenericSignatureFormatError - если общая сигнатура метода не соответствует формату, указанному в Спецификации виртуальной машины Java™
TypeNotPresentException - если часть базового исполняемого объекта throws ссылается на не существующее объявление типа
MalformedParameterizedTypeException - если часть базового исполняемого объекта throws ссылается на параметризованный тип, который не может быть создан по какой-либо причине
С тех пор:
1.5

equals

public boolean equals(Object obj)

Сравнивает этот Method с указанным объектом. Возвращает true, если объекты одинаковы. Два Methods одинаковы, если они были объявлены одним и тем же классом и имеют одинаковое имя, формальные типы параметров и возвращаемый тип.

Overrides:
equals в классе Object
Параметры:
obj - ссылка на объект, с которым необходимо сравнить.
Возвращает:
true , если этот объект такой же, как аргумент obj; false в противном случае.
См. также:
Object.hashCode(), HashMap

hashCode

public int hashCode()

Возвращает хеш-код для этого Method. Хеш-код вычисляется как исключающее ИЛИ хеш-кодов имени объявляющего класса базового метода и имени метода.

Overrides:
hashCode в классе Object
Возвращает:
значение хеш-кода для этого объекта.
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

toString

public String toString()

Возвращает строку, описывающую этот Method. Строка форматируется как модификаторы доступа к методу, если таковые имеются, за которыми следуют возвращаемый тип метода, пробел, имя класса, объявившего метод, точка, имя метода, за скобками перечисленные через запятую типы формальных параметров метода. Если метод выбрасывает обработанные исключения, список параметров следует за пробелом, словом «throws», за которым перечислены типы брошенных исключений через запятую. Например:

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

Модификаторы доступа располагаются в каноническом порядке, как указано в «Спецификации языка Java». Это public, protected или private в первую очередь, а затем другие модификаторы в следующем порядке: abstract, default, static, final, synchronized, native, strictfp.

Overrides:
toString в классе Object
Returns:
строка, описывающая этот Method

toGenericString

public String toGenericString()

Возвращает строку, описывающую этот Method, включая параметры типа. Строка форматируется как модификаторы доступа к методу, если таковые имеются, за которыми следуют квадратные скобки с перечислением параметров типа метода через запятую, если таковые имеются, возвращаемый тип метода, пробел, имя класса, объявившего метод, точка, имя метода, за скобками перечисленные через запятую типы формальных параметров метода. Если этот метод был объявлен для приема переменного числа аргументов, вместо обозначения последнего параметра как «Type[]», используется «Type...». Пробел используется для разделения модификаторов доступа друг от друга и от параметров типа или возвращаемого типа. Если нет параметров типа, список параметров типа опускается; если список параметров типа присутствует, пробел разделяет список от имени класса. Если метод объявлен для обработки исключений, список параметров следует за пробелом, словом «throws» и за ним перечислены типы исключений, которые могут быть сгенерированы, через запятую.

Модификаторы доступа располагаются в каноническом порядке, как указано в «Спецификации языка Java». Это public, protected или private в первую очередь, а затем другие модификаторы в следующем порядке: abstract, default, static, final, synchronized, native, strictfp.

Specified by:
toGenericString в классе Executable
Returns:
строка, описывающая этот Method, включая параметры типа
Since:
1.5

invoke

public Object invoke(Object obj,
                     Object... args)
              throws IllegalAccessException,
                     IllegalArgumentException,
                     InvocationTargetException

Вызывает метод, представленный этим объектом Method, на заданном объекте с заданными параметрами. Отдельные параметры автоматически распаковываются для соответствия примитивным формальным параметрам, и примитивные, и ссылочные параметры подвергаются преобразованиям вызова метода по мере необходимости.

Если базовый метод статический, то указанный аргумент obj игнорируется. Он может быть нулевым.

Если количество формальных параметров, требуемых базовым методом, равно 0, предоставленный массив args может иметь длину 0 или быть нулевым.

Если базовый метод — метод экземпляра, он вызывается с помощью динамического поиска метода, как документировано в Спецификации языка Java, раздел 15.12.4.4; в частности, может произойти переопределение на основе текущего типа целевого объекта.

Если базовый метод статический, класс, объявивший метод, инициализируется, если он ещё не был инициализирован.

Если метод выполняется без ошибок, возвращаемое им значение возвращается вызывающему методу invoke; если значение имеет примитивный тип, оно сначала соответствующим образом оборачивается в объект. Однако, если значение имеет тип массива примитивного типа, элементы массива не оборачиваются в объекты; другими словами, возвращается массив примитивного типа. Если возвращаемый тип базового метода void, вызов возвращает null.

Parameters:
obj - объект, с которого вызывается базовый метод
args - аргументы, используемые для вызова метода
Returns:
результат вызова метода, представленного этим объектом, на obj с параметрами args
Throws:
IllegalAccessException - если этот объект Method накладывает контроль доступа языка Java, и базовый метод недоступен.
IllegalArgumentException - если метод является методом экземпляра, и указанный аргумент-объект не является экземпляром класса или интерфейса, объявляющего базовый метод (или его подкласса или реализующего интерфейс); если количество фактических и формальных параметров отличается; если преобразование распаковки для примитивных аргументов завершается неудачно; или если после возможной распаковки значение параметра не может быть преобразовано в соответствующий формальный тип параметра с помощью преобразования вызова метода.
InvocationTargetException - если базовый метод выбрасывает исключение.
NullPointerException - если указанный объект null, и метод является методом экземпляра.
ExceptionInInitializerError - если инициализация, спровоцированная этим методом, завершается неудачно.

isBridge

public boolean isBridge()

Возвращает true если этот метод является мостовым методом; в противном случае возвращает false.

Returns:
true, если и только если этот метод является мостовым методом, как определено в Спецификации языка Java.
Since:
1.5

isVarArgs

public boolean isVarArgs()

Возвращает true если этот исполняемый элемент был объявлен для приема переменного числа аргументов; в противном случае возвращает false.

Overrides:
isVarArgs в классе Executable
Returns:
true если и только если этот исполняемый элемент был объявлен для приема переменного числа аргументов.
Since:
1.5

isSynthetic

public boolean isSynthetic()

Возвращает true если этот исполняемый элемент является синтезированным элементом; в противном случае возвращает false.

Specified by:
isSynthetic в интерфейсе Member
Overrides:
isSynthetic в классе Executable
Returns:
true, если и только если этот исполняемый элемент является синтезированным элементом, как определено в Спецификации языка Java™.
Since:
1.5

isDefault

public boolean isDefault()

Возвращает true если этот метод является методом по умолчанию; в противном случае возвращает false. Метод по умолчанию — это открытый неабстрактный метод экземпляра, то есть метод, не являющийся статическим, с телом, объявленный в типе интерфейса.

Returns:
true, если и только если этот метод является методом по умолчанию, как определено в Спецификации языка Java.
Since:
1.8

getDefaultValue

public Object getDefaultValue()

Возвращает значение по умолчанию для члена аннотации, представленного этим экземпляром Method. Если член имеет примитивный тип, возвращается экземпляр соответствующего типа обёртки. Возвращает null, если для члена не задано значение по умолчанию или если экземпляр метода не представляет объявленного члена типа аннотации.

Returns:
значение по умолчанию для члена аннотации, представленного этим экземпляром Method.
Throws:
TypeNotPresentException - если аннотация имеет тип Class и для значения класса по умолчанию не найдено определения.
Since:
1.5

getAnnotation

public <T extends Annotation> T getAnnotation(Class<T> annotationClass)

Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, в противном случае null.

Specified by:
getAnnotation в интерфейсе AnnotatedElement
Overrides:
getAnnotation в классе Executable
Type Parameters:
T - тип аннотации, для которой следует запросить и вернуть, если она присутствует
Parameters:
annotationClass - объект Class, соответствующий типу аннотации
Returns:
аннотация этого элемента для указанного типа аннотации, если она присутствует на этом элементе, в противном случае null
Throws:
NullPointerException - если указанный класс аннотации null
Since:
1.5

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()

Возвращает аннотации, непосредственно присутствующие на этом элементе. Этот метод игнорирует унаследованные аннотации. Если на этом элементе нет аннотаций непосредственно присутствующих, возвращаемое значение — массив длины 0. Вызывающий метод может свободно изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.

Specified by:
getDeclaredAnnotations в интерфейсе AnnotatedElement
Overrides:
getDeclaredAnnotations в классе AccessibleObject
Returns:
аннотации, непосредственно присутствующие на этом элементе
Since:
1.5

getParameterAnnotations

public Annotation[][] getParameterAnnotations()

Возвращает массив массивов Annotations, представляющих аннотации формальных параметров, в порядке объявления, Executable представленного этим объектом. Синтетические и обязательные параметры (см. объяснение ниже), такие как внешний параметр «this» для конструктора внутреннего класса, будут представлены в возвращаемом массиве. Если у исполняемого элемента нет параметров (то есть нет ни формальных, ни синтетических, ни обязательных параметров), возвращается массив нулевой длины. Если у Executable есть один или несколько параметров, вложенный массив нулевой длины возвращается для каждого параметра без аннотаций. Объекты аннотации, содержащиеся в возвращаемых массивах, сериализуемы. Вызывающий метод может свободно изменять возвращаемые массивы; это не повлияет на массивы, возвращаемые другим вызывающим методам. Компилятор может добавить дополнительные параметры, которые неявно объявлены в исходном коде («обязательные»), а также параметры, которые не объявлены ни неявно, ни явно в исходном коде («синтетические»), в список параметров для метода. См. Parameter для получения дополнительной информации.

Указано в:
getParameterAnnotations в классе Executable
Возвращает:
массив массивов, представляющих аннотации формальных и неявных параметров, в порядке объявления, исполняемого объекта, представленного этим объектом
С:
1.5
См. также:
Parameter, AnnotatedElement.getAnnotations()

getAnnotatedReturnType

public AnnotatedType getAnnotatedReturnType()

Возвращает объект AnnotatedType, представляющий использование типа для указания возвращаемого типа метода/конструктора, представленного этим объектом Executable. Если этот объект Executable представляет конструктор, то объект AnnotatedType представляет тип создаваемого объекта. Если этот объект Executable представляет метод, то объект AnnotatedType представляет использование типа для указания возвращаемого типа метода.

Указано в:
getAnnotatedReturnType в классе Executable
Возвращает:
объект, представляющий возвращаемый тип метода или конструктора, представленного этим объектом Executable
С:
1.8

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/reflect/Method.html

Spec-Zone .ru
спецификации, руководства, описания, API