Java Reference
In-Depth Information
Example 2.9 ConstantExpression.java
1. import java.lang.reflect.Method;
2. import java.lang.reflect.InvocationTargetException;
3. public class ConstantExpression implements Expression {
4. private Object value;
5.
6. public ConstantExpression(Object newValue) {
7. value = newValue;
8. }
9.
10. public void interpret(Context c) {
11. c.addVariable(this, value);
12. }
13. }
Example 2.10 VariableExpression.java
1. import java.lang.reflect.Method;
2. import java.lang.reflect.InvocationTargetException;
3. public class VariableExpression implements Expression {
4. private Object lookup;
5. private String methodName;
6.
7. public VariableExpression(Object newLookup, String newMethodName) {
8. lookup = newLookup;
9. methodName = newMethodName;
10. }
11.
12. public void interpret(Context c) {
13. try {
14. Object source = c.get(lookup);
15. if (source != null) {
16. Method method = source.getClass().getMethod(methodName, null);
17. Object result = method.invoke(source, null);
18. c.addVariable(this, result);
19. }
20. }
21. catch (NoSuchMethodException exc) {}
22. catch (IllegalAccessException exc) {}
23. catch (InvocationTargetException exc) {}
24. }
25. }
Example 2.11 CompoundExpression.java
1. public abstract class CompoundExpression implements Expression {
2. protected ComparisonExpression expressionA;
3. protected ComparisonExpression expressionB;
4.
5. public CompoundExpression(ComparisonExpression expressionA, ComparisonExpression
expressionB) {
6. this.expressionA = expressionA;
7. this.expressionB = expressionB;
8. }
9. }
Example 2.12 AndExpression.java
1. public class AndExpression extends CompoundExpression {
2. public AndExpression(ComparisonExpression expressionA, ComparisonExpression expressionB) {
3. super(expressionA, expressionB);
4. }
5.
6. public void interpret(Context c) {
7. expressionA.interpret(c);
8. expressionB.interpret(c);
9. Boolean result = new Boolean(((Boolean)c.get(expressionA)).booleanValue() &&
((Boolean)c.get(expressionB)).booleanValue());
10. c.addVariable(this, result);
11. }
12. }
Example 2.13 OrExpression.java
Search WWH ::




Custom Search