2016-11-21 4 views
1

Возможно ли передать функцию как параметр в другую функцию?Могу ли я передать имя функции в качестве аргумента функции в java?

void add() 
{ ---- 
} 
------ 
--- 
object.display(add()); 
+0

@FastSnail, не necesserily правда. это зависит от того, было ли намерение называть функцию add() где-то внутри дисплея() –

ответ

0

Вы можете передать его, но это будет взять тип возвращаемого метода как параметр, например

public int xyz(); 

предположить, что это подпись метода АБВ, и вы хотите, чтобы передать его

public int abc(int a) 

, то вы можете пройти как

abc(xyz()) 
5

Примечание: дубликаты, приведенные выше, подходят для Java 1.0-7, для Java 8, пожалуйста, прочитайте ниже.


Вы можете передать имя как этот

object.display("add"); 

однако вам нужно будет искать это имя с помощью отражения. Это склонно к ошибкам, и я бы избегал этого.

Что вы можете сделать, это передать ссылку метод или лямбда

object.display(this::add); 

или

object.display(() -> add()); 

Декларация для display может быть

public void display(Runnable onDisplay) { 
    // do something 
    onDisplay.run(); 
    // do something else 
} 
Смежные вопросы