在Flex调用Java方法时,不仅可以传递基本数据类型,而且可以传递自定义复杂的数据类型。在这里我们把这种类型称作Bean Class Type,它的作用类似于J2EE里的Bean Class,只起着组织复杂数据的作用。
在eclipse 工具栏上点击
在Flex调用Java方法时,不仅可以传递基本数据类型,而且可以传递自定义复杂的数据类型。在这里我们把这种类型称作Bean Class Type,它的作用类似于J2EE里的Bean Class,只起着组织复杂数据的作用。 在eclipse 工具栏上点击 点击完成,eclipse会自动生成cn.First.BeanTest类,内容如下:
图标,打开新建对话框,输入如下内容:
package cn.first; import cn.smartinvoke.ide.declare.ABeanType; @ABeanType public class BeanTest{ public BeanTest() { } }
@ABeanType标注告诉eclipse这是一个Bean Class Type,它的修改会同步到First_项目的cn/first/BeanTest.as文件中,以便Flex的调用。在这里BeanTest.as 与BeanTest.java对应。Flex调用方法时传递的BeanTest.as类型对象会在java端被smartinvoke解析为BeanTest.java类型对象处理,反过来也一样。 我们在BeanTest.java 中添加name属性如下:
private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }
打开BeanTest.as你会发现,该name属性也被同步到这里,如下:
private var _name:String; public function set name(val:String):void{ this._name=val; } public function get name():String{ return this._name; }
我们在ServiceTest.java类中添加方法beanTest以便测试BeanTest类。内容如下:
public void beanTest(BeanTest bean){ System.out.println(bean); }
打开First_项目中的ServiceTest.as文件会发现beanTest方法已被同步到这里,如下:
public function beanTest(bean:BeanTest):void{ this.call('beanTest',arguments); }
在FirstWin.mxml中调用ServiceTest.as类的beanTest方法你会发现Flex传递的BeanTest对象会被传递到Java端。 在Bean Class Type类型中不仅可以定义基本的数据类型, 而且可以定义其他的Bean Class Type类型。当然Bean Class Type也可以继承其他的类。
注意SmartInvoke在这里只支持基本类型与复杂Bean类型的传递,不介意用户传递Service Class Type与Bean Class Type类型,因为这样会增加程序的复杂度