阅读:2513次   评论:0条   更新时间:2011-05-26    

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 TypeBean Class Type类型,因为这样会增加程序的复杂度

评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics