CallPublicEmptyArgStaticOrGivenMethod.java
package eu.javaexperience.reflect;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Map;
import eu.javaexperience.collection.map.SmallMap;
import eu.javaexperience.interfaces.simple.SimpleCall;
public class CallPublicEmptyArgStaticOrGivenMethod
{
private final Map<String,Method> meths = new SmallMap<>();
private final SimpleCall def;
public CallPublicEmptyArgStaticOrGivenMethod(Class<?> cls,SimpleCall orDefault)
{
def = orDefault;
for(Method m:cls.getMethods())
if(Modifier.isStatic(m.getModifiers()) && Modifier.isPublic(m.getModifiers()) && m.getParameterTypes().length == 0)
meths.put(m.getName(), m);
}
public void invoke(String name) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException
{
Method m = meths.get(name);
if(m != null)
m.invoke(null);
else if(def != null)
def.call();
}
public SimpleCall getDefaultCall()
{
return def;
}
}