Как вызвать метод в Java с помощью отражения

Как я могу вызвать метод с параметрами с помощью отражения?

Я хочу указать значения тех параметров.

9
задан Mr_and_Mrs_D 6 October 2013 в 19:46
поделиться

3 ответа

Вот простой пример вызова метода с использованием отражения, включающего примитивы.

import java.lang.reflect.*;

public class ReflectionExample {
    public int test(int i) {
        return i + 1;
    }
    public static void main(String args[]) throws Exception {
        Method testMethod = ReflectionExample.class.getMethod("test", int.class);
        int result = (Integer) testMethod.invoke(new ReflectionExample(), 100);
        System.out.println(result); // 101
    }
}

Чтобы быть надежным, вы должны перехватывать и обрабатывать все проверенные исключения, связанные с отражением NoSuchMethodException , IllegalAccessException , InvocationTargetException .

15
ответ дан 4 December 2019 в 11:41
поделиться

Вы можете использовать getClass в любом объекте, чтобы обнаружить его класс. Затем вы можете использовать getMethods , чтобы обнаружить все доступные методы. Если у вас есть правильный метод, вы можете вызвать , вызвать с любым количеством параметров

0
ответ дан 4 December 2019 в 11:41
поделиться

это самый простой способ, который я знаю, его нужно окружить try & catch:

Метод m = .class.getDeclaredMethod ("", arg_1.class, arg_2.class, ... arg_n.class); result = () m.invoke (null, (Object) arg_1, (Object ) arg_2 ... (Object) arg_n);

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

не забудьте добавить импорт в java.lang.reflect. *;

0
ответ дан 4 December 2019 в 11:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: