Вызов методов на основе параметров в Java - PullRequest
0 голосов
/ 11 января 2020

Я не знаю, как именно это сказать, но я сделаю это.

Я хочу вызвать метод, основанный на параметре. Я не уверен, возможно ли это, но я надеюсь, что это так, потому что это сэкономит около 200 строк кода и хлопот! Пожалуйста, дайте мне знать, если мне нужно быть более конкретным c о чем-либо!

public static void example(String a){
        System.(a).println("Hello")
   }

public static void main(String[] args){
        example("out");
    }

Спасибо за вашу помощь!

Ответы [ 3 ]

1 голос
/ 11 января 2020

Вы можете ссылаться на System.out с "out" (или другими возможными полями) с помощью Reflection , но в конечном итоге вы получите добавив больше кода для обработки исключений, не сильно экономя ,

0 голосов
/ 11 января 2020

попробуйте что-то вроде этого

public void example(String a){
    Class<?> c = Class.forName("java.lang.system");
    Method method = c.getDeclaredMethod(a, parameterTypes);
    method.invoke(objectToInvokeOn, params);
   }

public static void main(String[] args){
        example("out");
    }
  • parameterTypes имеет тип Class [] и объявляет параметры, которые принимает метод
  • params, имеет тип Object [] и объявляет параметры для передачи в метод
0 голосов
/ 11 января 2020

Это невозможно, вы получите ошибку времени компиляции ниже.

Невозможно сделать ссылку c stati на пример не * stati c метода (String ) из типа

Здесь (пример) находится в области non-stati c, основной метод - stati c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...