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:
2011-02-02 21:02:21 +00:00
parent 83cbde6ec3
commit 65429f1502
4 changed files with 34 additions and 8 deletions

View File

@@ -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);
}
}

View File

@@ -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!");
}
}

View File

@@ -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");
}
}

View File

@@ -1,6 +1,5 @@
package pm.device;
import java.util.ArrayList;
import java.util.Queue;
import pm.event.Event;