The code is wanted to be compatible with most devices, so it is written in java 1.7.
similar interface
s are used in code for an event system as "listeners"
interface
Updatable
{
void
update();
}
Events are called → call all "listeners"
spot(Method, Object... event);
for Updatable
for example spot
ting an update
is simple in java 1.8
spot(Updatable::update);
//or
spot(s->System.out.print(s), "Easy. Now let's save our planet!");
Attempts. Because this option is unavailable, two options are to consider. Both are using reflection (unsafe) to find out the Method
to call
//util methods
static public @Nullable Method
method(Class<?> of, String name, Class... args)
{
try { return of.getDeclaredMethod(name, args); }
catch(Exception e)
{
Log.v(of.getSimpleName(),
"method "+ name + Arrays.toString(args)
+" does not exist in "+ of.getName(), e);
return null;
}
}
static @NotNull Class<?>[]
classes(@NotNull Object[] of)
{
Class<?>[] type=new Class[of.length];
for(int i=0; i<type.length; ++i)
{
type[i]= of[i].getClass();
}
return type;
}
0] finding out the Method
by name each time
void
spot(Class<?> spotted_class, String name,
Object... event)
{
spot(method(spatted_class, name, classes(signal)),
signal);
}
//usage
spot(Updatable.class, "update");
1] creating a constant for every method
static final Method
UPDATE= method(Updatable.class, "update");
//usage
spot(UPDATE);
Questions. Is there a
- safer
- simpler
way to implement my goal?
Aucun commentaire:
Enregistrer un commentaire