Statement和Expression的用法

简单的描叙:

      1.Statement 对象表示基本语句,其中将单个方法应用于某一目标和一组参数,以返回结果,比如 "a.setFoo(b)"。注意,此示例使用名称来指示目标及其参数,statement 对象不需要名称空间,可以使用值本身构造。statement 对象将指定方法与其环境相关联,作为值的简单集合:目标和参数值数组

                      2.Expression 对象表示基本表达式,其中将单个方法应用于某一目标和一组参数,以返回结果,与在 "a.getFoo()" 中一样。

除了超类的属性之外,Expression 对象还提供了一个,它是在对这个表达式进行求值时所返回的对象。返回值通常不由调用者提供,而是通过动态查找方法并在第一次调用 getValue 时调用查找到的方法来计算。

两者的差异:

               通过上面的介绍可以知道Expression是可以获得返回值的,方法是getValue。Statement不能获得返回值

代码实现:

          1.javaBean的类

                                 package com.xmlencoder;

public class Person{
    private int id;
    private String name;
    private String content;
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

测试的代码:

package com.xmlencoder;

import java.beans.Expression;
import java.beans.Statement;

public class TestStatementAndExpression {
    public static void testStatement() {
        try {
            Person person = new Person();
            person.setId(1);
            person.setName("tan");
            person.setContent("备注");
            Statement statement1 = new Statement(person, "setId", new Object[] { 1 });
            Statement statement2 = new Statement(person, "setName", new Object[] { "tan" });
            Statement statement3 = new Statement(person, "setContent", new Object[] { "备注" });
            statement1.execute();
            statement2.execute();
            statement3.execute();
            System.out.println(person.getId()+"--"+person.getName()+"--"+person.getContent());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void testExpression() {
        try {
            Person person = new Person();
            person.setId(1);
            person.setName("tan");
            person.setContent("备注");
            Expression expression1 = new Expression(person, "setId", new Object[] { 1 });
            Expression expression2 = new Expression(person, "setId", new Object[] { 1 });
            Expression expression3 = new Expression(person, "setId", new Object[] { 1 });
            expression1.execute();
            expression2.execute();
            expression3.execute();
            System.out.println(person.getId()+"--"+person.getName()+"--"+person.getContent());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
//        TestStatementAndExpression.testStatement();//1
        TestStatementAndExpression.testExpression();//2
    }
}
输出结果:

      1和2的输出结果一样展示:

                 1--tan--备注





你可能感兴趣的:(java)