Java 6 没有一阶函数,但您可以使用函数对象模式:
interface NullaryFunction< B > {
B f();
}
public class Example {
private final Map< String, NullaryFunction< String > > mFuncs = new HashMap< String, NullaryFunction< String > >() { {
put( "getName", fncGetName );
put( "getLastname", fncGetLastname );
put( "getMiddle", fncGetMiddle );
} };
public String getName() { /* ... */ }
private NullaryFunction< String > fncGetName = new NullaryFunction< String >() {
@Override String f() { return getName(); }
};
public String getMiddle() { /* ... */ }
private NullaryFunction< String > fncGetMiddle = new NullaryFunction< String >() {
@Override String f() { return getMiddle(); }
};
public String getLastname() { /* ... */ }
private NullaryFunction< String > fncGetLastname = new NullaryFunction< String >() {
@Override String f() { return getLastname(); }
};
public String runAFunction( String strName ) {
return mFuncs.get(strName).f();
}
}