Класс Method
- java.lang.Object
-
- java.lang.reflect.AccessibleObject
-
- java.lang.reflect.Executable
-
- java.lang.reflect.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) | Сравнивает этот |
AnnotatedType | getAnnotatedReturnType() | Возвращает объект |
<T extends Annotation> | getAnnotation(Class<T> annotationClass) | Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null. |
Annotation[] | getDeclaredAnnotations() | Возвращает аннотации, которые непосредственно присутствуют на этом элементе. |
Class<?> | getDeclaringClass() | Возвращает объект |
Object | getDefaultValue() | Возвращает значение по умолчанию для члена аннотации, представленного этим экземпляром |
Type[] | getGenericExceptionTypes() | Возвращает массив объектов |
Type[] | getGenericParameterTypes() | Возвращает массив объектов |
Type | getGenericReturnType() | Возвращает объект |
String | getName() | Возвращает имя метода, представленного этим объектом |
Annotation[][] | getParameterAnnotations() | Возвращает массив массивов аннотаций формальных параметров, в порядке объявления, для исполняемого кода, представленного этим объектом. |
int | getParameterCount() | Возвращает количество формальных параметров (явно, неявно или ни то, ни другое) для исполняемого кода, представленного этим объектом. |
Class<?> | getReturnType() | Возвращает объект |
TypeVariable<Method>[] | getTypeParameters() | Возвращает массив объектов |
int | hashCode() | Возвращает хэш-код для этого |
Object | invoke(Object obj,
Object... args) | Вызывает представленный этим объектом |
boolean | isBridge() | Возвращает |
boolean | isDefault() | Возвращает |
boolean | isSynthetic() | Возвращает |
boolean | isVarArgs() | Возвращает |
void | setAccessible(boolean flag) | Устанавливает флаг |
String | toGenericString() | Возвращает строку, описывающую этот |
String | toString() | Возвращает строку, описывающую этот |
Методы, объявленные в классе 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находится в пакете, к которому модуль, содержащийDexportsэкспортирует по крайней мере в модуль, содержащийC. - Член является
protectedstatic,Dнаходится в пакете, к которому модуль, содержащийDэкспортирует по крайней мере в модуль, содержащийC, иCявляется подклассомD. -
Dнаходится в пакете, к которому модуль, содержащийDopensэкспортирует по крайней мере в модуль, содержащий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.
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