Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpRfMc 132 of 322 menu
◀ ▶

Вызов метода в Java

Элемент из списка методов имеет тип Method. У него есть invoke - универсальный вызов: первым аргументом передают объект, для статического метода можно указать null, дальше идут параметры метода.

У метода экземпляра без параметров достаточно передать объект одним аргументом:

import java.lang.reflect.Method; class Beacon { private final String channel; Beacon(String channel) { this.channel = channel; } String ping() { return "on:" + channel; } } public class Main { public static void main(String[] args) throws Exception { Method pingFn = Beacon.class.getDeclaredMethod("ping"); Beacon unit = new Beacon("north"); Object result = pingFn.invoke(unit); System.out.println(result); } }

Если у метода есть параметры, их добавляют после экземпляра в том же порядке, что в объявлении:

import java.lang.reflect.Method; class Beacon { private final String channel; Beacon(String channel) { this.channel = channel; } String format(int level) { return channel + ":" + level; } } public class Main { public static void main(String[] args) throws Exception { Method formatFn = Beacon.class.getDeclaredMethod("format", int.class); Beacon unit = new Beacon("east"); System.out.println(formatFn.invoke(unit, 3)); } }

Закрытый метод перед вызовом открывают через setAccessible, как и закрытый конструктор. Поиск по имени и типам параметров выполняет getDeclaredMethod.

Класс Mixer содержит метод из двух целых параметров, возвращающий их сумму. Найдите метод средствами рефлексии и вызовите его с аргументами 2 и 5.

Класс Relay имеет метод без параметров, который возвращает строку "ok". Выполните его для готового экземпляра.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить