Nu wordt de methode dynamisch geladen via de enum met een beetje reflectie. Als de methode niet bestaat, worden exceptions gegooid.
This commit is contained in:
@@ -1,5 +1,18 @@
|
||||
package pm.action;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
public enum Action {
|
||||
START
|
||||
START ("start"),
|
||||
TEST ("test");
|
||||
|
||||
protected String action;
|
||||
|
||||
Action(String action) {
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
public Method getMethod(Object object) throws Exception {
|
||||
return object.getClass().getMethod(action);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,23 @@
|
||||
package pm.applicatie.voorbeeld;
|
||||
|
||||
import pm.action.Action;
|
||||
import pm.application.Application;
|
||||
|
||||
public class Voorbeeld extends Application {
|
||||
protected void start() {
|
||||
public Voorbeeld() {
|
||||
try {
|
||||
invoke(Action.TEST);
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void start() {
|
||||
System.out.println("jeheee!");
|
||||
}
|
||||
|
||||
public void test() {
|
||||
System.out.println("neheee!");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ package pm.application;
|
||||
import pm.action.Action;
|
||||
|
||||
public abstract class Application {
|
||||
public void invoke(Action action) {
|
||||
switch (action) {
|
||||
case START:
|
||||
start();
|
||||
break;
|
||||
public void invoke(Action action) throws Exception {
|
||||
try {
|
||||
action.getMethod(this).invoke(this);
|
||||
} catch (Exception e) {
|
||||
throw new Exception("Failed to invoke action");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package pm.device;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Queue;
|
||||
|
||||
import pm.event.Event;
|
||||
|
||||
Reference in New Issue
Block a user