TLDR:
Is there a Java equivalent of C#\'s delegates that will allow me to queue up methods of various classes and add them to the queue dynamically? Language constru
Actually there is no exact counterpart for delegates in Java. But there are constructs that mimic their behavior.
The concept that comes closes to delegates in Java 8 is that of functional interfaces.
For example, if you have a C# delegate:
delegate void Runnable();
in Java, you would create a functional interface like:
@FunctionalInterface
public interface Runnable {
void run();
}
The nice thing about functional interfaces is they can be used easily in lambda expressions.
So, let's suppose you have the following class:
public class SomeClass {
public static void someStaticMethod() {
}
public void someMethod() {
}
}
With Java 8, you get lambda expressions.
List queue = new ArrayList<>();
queue.add(() -> someMethod());
queue.add(() -> someStaticMethod());
There is a short-hand named method reference for this, if you actually simply call a method:
List queue = new ArrayList<>();
queue.add(this::someMethod);
queue.add(SomeClass::someStaticMethod);
With Java 7, the only thing you can use is anonymous classes:
List queue = new ArrayList<>();
queue.add(new Runnable() {
public void run() {
someMethod();
}
});
queue.add(new Runnable() {
public void run() {
someStaticMethod();
}
});
I hope this was not too much information, so you can still learn. ;-) However, I like my answer to be useful also for other people looking up this question.