2015-02-12 4 views
0

Я хочу вызвать метод, заданный строкой. Я имею в виду, у меня есть String, который является именем метода, который я хочу вызвать.String to method (invoke) throws a Exception

Я видел, что отражение - это путь к достижению цели, но когда я пытаюсь получить метод (перед его вызовом), я получаю исключение.

Вот что я сделал:

 Method method = Object.class.getMethod("functionToCall", String.class); 

Почему эта команда бросает исключение? Что я могу сделать, чтобы получить метод, который будет вызван?

спасибо, что заблаговременно!

+5

В 'Object' класс не имеет метода под названием 'functionToCall', который принимает параметр« String ». Что вы ожидали от этого? Разве вы не хотели ставить свой собственный класс, который на самом деле имеет метод 'functionToCall' вместо' Object'? –

+0

Я думаю, что вы приняли инструкцию чуть ли не буквально. –

+0

Также, когда вы получаете исключение, вы должны включить исключение в свой вопрос. –

ответ

1

В вашем примере вы пытаетесь получить метод functionToCall, который принимает параметр String как параметр от java.lang.Object. Этого не произойдет.

Однако вы можете использовать getMethod() и invoke() комбинации, как это:

Класс для работы с:

public class MyClass { 
    public void myMethod(final String pString) { 
     System.out.println("Hello "+pString); 
    } 
} 

И на самом деле вызвать метод

// We get the method myMethod which takes a String. 
Method method = MyClass.class.getMethod("myMethod", String.class); 
// We call it on a new MyClass instance with "Test" as parameter. 
method.invoke(new MyClass(), "Test");