2016-02-12 2 views
-3

У меня есть 2 метода с именамиКак создать «если условие» на основе имен методов в Java

firstMethod() 
secondMethod() 

Я хотел иметь, если условие на основе имен методов.

Например:

if (methodName.contains (firstMethod())) 
{ 

} 
else 
{ 

} 

Можно ли в Java?

+0

Знаете ли вы имена методов заранее? – Hackerdarshi

+0

Да, я знаю имена методов перед собой [например, - здесь firstMethod() и secondMethod()] – user2987894

+2

Вы хотите знать, содержит ли метод ** имя ** ** возвращаемое значение ** другого метода? Почему на небесах ты хочешь этого? Можете ли вы дать нам ваш реальный случай использования? Почему бы просто не использовать строку (поскольку вы знаете имя метода во время написания кода)? –

ответ

1

Возможно использование reflection.

В основном отражение - это механизм перехода от строк к классам, методам, конструкторам и наоборот.

Но неясно, как вы хотели бы использовать его, поэтому я не знаю, как быть более ясным.

В любом случае вам необходимо получить ссылку на Method. Из класса Method можно получить имя этого метода как String с помощью метода getName.

Как только у вас есть строки, вы можете сравнить их, как обычно, с помощью строковых методов.

+0

Спасибо всем за предложения. – user2987894

0

Class.java есть способ #getDeclaredMethods, который возвращает массив, содержащий Method объекты, отражающие все объявленные методы класса. Method класс, в свою очередь, имеет #getName(), который возвращает представление метода имени метода String.

1

Вы, скорее всего, действительно не хотите этого делать. Вместо этого, почему бы не указать параметр для метода, который вы вызываете, и это диктует, что такое поведение. Например:

void firstMethod() { 
    someMethod(true); 
} 

void secondMethod() { 
    someMethod(false); 
} 

void someMethod(boolean fromFirstMethod) { 
    if (fromFirstMethod) { 
     // some code... 
    } else { 
     // some other code... 
    } 
} 
+0

Несмотря на то, что это может сделать то, что хочет OP, оно все еще некрасиво. Но это не ваша вина, что OP этого хочет. – Tom

+1

Да, согласитесь, это уродливо, это было скорее попыткой показать OP простой альтернативой ответам на рефлексию, которые не могут превысить излишнюю проблему. Это можно легко переделать в нечто более приятное. Если бы у нас было больше кода OPs, чтобы основывать наши ответы, возможно, такие вещи, как шаблоны стратегии или базовое наследование, могли бы обеспечить более элегантное решение. – ewanc

Смежные вопросы