What to Use Instead of Function Pointers in Java
In the Java programming language, function pointers, a feature that allows one to pass functions as arguments to other functions, are absent. However, there are alternatives to achieve a similar functionality.
One viable option is anonymous inner classes. Consider the need to create multiple methods that perform the same operation except for a small variation in a single line of code. Anonymous inner classes offer a solution.
To utilize anonymous inner classes, an interface must be defined, declaring the method that will be passed in. For instance, if the method takes a String parameter and returns an integer, the interface would resemble this:
interface StringFunction { int func(String param); }
A method that accepts the function pointer would accept an instance of the StringFunction interface, as shown:
public void takingMethod(StringFunction sf) { int i = sf.func("my string"); // do whatever ... }
To invoke this method, use anonymous inner classes like so:
ref.takingMethod(new StringFunction() { public int func(String param) { // body } });
In Java 8 and later, lambda expressions provide a more succinct alternative:
ref.takingMethod(param -> bodyExpression);
This allows for passing a function as an argument in a concise and readable manner, effectively emulating the behavior of function pointers.
The above is the detailed content of How Can I Achieve Function Pointer Functionality in Java?. For more information, please follow other related articles on the PHP Chinese website!