В Java существует три подхода.
1) Передайте объект, на котором есть метод, который предоставляет необходимые вам функциональные возможности.
Например
new CronJob(3000, new Runnable() {
public void run() {
System.out.println("I ran");
}
});
До Java 8, который был в значительной степени единственный вариант. После Java 8 у нас есть еще два подхода:
2) Используйте лямбда, которая под капотом - действительно просто синтаксический сахар для создания реализации интерфейса только с одним методом.
new CronJob(3000,() -> System.out.println("I ran"));
можно прочитать на Лямбдах here
Лямбд могут принимать аргументы, и они могут также получить доступ к полям и конечным переменным из их объявляющего контекста. Они не являются полными закрытиями, поэтому переменные должны быть окончательно окончательными, а это значит, что их не нужно объявлять окончательными, поскольку компилятор Java 8 выяснит это для нас.
Например:
public void scheduleJob(String name) {
new CronJob(3000,() -> System.out.println("Hello "+name));
}
Если один использует интерфейс метод которого принимает аргумент, то он может выглядеть следующим образом
public interface Job {
public void doJob(String arg);
}
public void scheduleJob() {
new CronJob(3000, arg -> System.out.println("Hello "+arg));
}
3) Пройти существующий method by reference, например
private void theTaskMethod() { System.out.println («Я побежал»); }
новый CronJob (3000,() -> this :: theTaskMethod);
Если вы хотите использовать этот подход с интерфейсом, метод которого принимает аргумент, то ссылка метода должна указывать на метод, который также принимает аргумент того же типа. Например
Если один использует интерфейс метод которого принимает аргумент, то он может выглядеть следующим образом
public interface Job {
public void doJob(String arg);
}
public void scheduleJob() {
new CronJob(3000, System.out::println); // would print out what ever arg was past to doJob(arg)
}
возможного дубликата [Java Pass метода в качестве параметра] (http://stackoverflow.com/questions/2186931/java-pass-method-as-parameter) – mkazma