Я просто хочу знать, возможно ли это. Я использую Javascript в течение 4 лет в качестве веб-разработчика, поэтому я очень привык использовать анонимные функции в своем коде. Теперь, тестируя обработку, я хочу посмотреть, как я могу делать все, что я обычно делаю с Javascript.Обработка Java, используя анонимную функцию
В Javascript, я использую такие функции, как так:
fn.call(instance,arg1, arg2);
или
fn.apply(instance,args);
... однако, я не в состоянии сделать что-то подобное в обработке.
Я пытаюсь вызвать «анонимные функции» и запустить функцию в пространстве имен экземпляра:
public void resetHealth(){
this.health = 10;
}
class Player{
public int health;
Player(){
super();
this.health = 10;
}
}
Player p = new Player();
//where it gets prickly:
resetHealth.invoke(p);
Ожидаемый результат: print p.health; //returns 0
Я хочу знать, что я делать неправильно для Java. Однако это может быть связано с обработкой.
Почему функция resetHealth за пределами класса Player? 'this' не имеет никакого контекста или значения в этом методе. –
Причина в том, что я могу делиться функциями и передавать их, а не помещать функции внутри классов. Есть ли способ сделать это? –
См. Java 8 [ссылки на методы] (https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html). Но я бы посоветовал вам просто определить [интерфейсы] (https://docs.oracle.com/javase/tutorial/java/concepts/interface.html) и передать объекты, которые реализуют этот интерфейс. «Ввод методов внутри объектов» - это хорошо :) – paulsm4