java返回对象给flex_『FLEX』Java的pojo对象转成Flex的vo对象

在使用openamf的类映射功能时,一般需要在as端也定义和java pojo类似的对象,用于类的映射。

如果手工去写这些和java对应的flex vo对象比较麻烦,这里用java写了个简单的as vo对象生成的工具,代码如下:

/**

*

*/

package com.nstar.base.util;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.lang.reflect.Field;

import org.apache.commons.lang.StringUtils;

/**

* @author Administrator

*

*/

public class VoUtils {

public VoUtils(){}

//根据java类对象的类型返回vo类型

public static String getClassType(Class c){

String typeName = c.getSimpleName();

if (typeName.equals("String") || typeName.equals("Date")) {

return typeName;

}else if (typeName.equals("BigDecimal") || typeName.equals("Decimal") ||

typeName.equals("Double")) {

return "Number";

}else if (typeName.equals("Integer")) {

return "int";

}else if (typeName.equals("Boolean")) {

return "boolean";

}else {

return "*";//其它类型的设置为未知类型

}

}

//重复c字符count次,用于格式化生成的as文件

public static String repeat(String c, int count){

String temp = "";

for(int i = 0;i

temp += c;

}

return temp;

}

/**

* 生成as文件

* @param pojoName java对象名称

* @param packageName flex中vo对象的包名

* @throws ClassNotFoundException

* @throws IOException

*/

public static void generateAsFile(String pojoName, String packageName, String folder)

throws ClassNotFoundException, IOException {

Class c = Class.forName(pojoName);

Field[] fields =c.getDeclaredFields();

//as的vo对象名称结尾加上VO标志

File f = new File(folder+c.getSimpleName()+"VO.as");

BufferedWriter bw = new BufferedWriter(

new FileWriter(f));

//包名,没有设置包名就取和java pojo一样的包名

if (StringUtils.isEmpty(packageName)){

bw.write("package "+c.getPackage().getName()+"\n{\n");

}else{

bw.write("package "+packageName+"\n{\n");

}

//写类

bw.write(repeat(" ",4)+"public class "+c.getSimpleName()+"VO\n");

bw.write(repeat(" ",4)+"{\n");

//写属性

for(int i=0;i

Class fieldType = fields[i].getType();

String typeName = getClassType(fieldType);

bw.write(repeat(" ",8)+"private var _"+fields[i].getName()+":"+typeName+";\n");

}

bw.write("\n\n\n");

//写空的构造函数

bw.write(repeat(" ",8)+"public function "+c.getSimpleName()+"VO(){}\n\n");

//写 setter/getter 方法

for(int i=0;i

Class fieldType = fields[i].getType();

String typeName = getClassType(fieldType);

//setter

bw.write(repeat(" ",8)+"public function set "+fields[i].getName()+"(value:"+typeName+"):void{\n");

bw.write(repeat(" ",12)+"this._"+fields[i].getName()+" = value;\n");

bw.write(repeat(" ",8)+"}\n\n");

//getter

bw.write(repeat(" ",8)+"public function get "+fields[i].getName()+"():"+typeName+"{\n");

bw.write(repeat(" ",12)+"return this._"+fields[i].getName()+";\n");

bw.write(repeat(" ",8)+"}\n\n\n");

}

bw.write(repeat(" ",4)+"}\n");

bw.write("}");

bw.close();

}

//测试,写了个测试

public static void main(String[] args) throws ClassNotFoundException, IOException {

// TODO Auto-generated method stub

String[] pojos = {

"com.nstar.model.orderexpress.Area",

"com.nstar.model.orderexpress.FoodType",

"com.nstar.model.orderexpress.Holiday",

"com.nstar.model.orderexpress.ItemSpec",

"com.nstar.model.orderexpress.ItemSpecType",

"com.nstar.model.orderexpress.Menu2Rest",

"com.nstar.model.orderexpress.OrderInfo",

"com.nstar.model.orderexpress.OrderInfoExp",

"com.nstar.model.orderexpress.OrderMenu",

"com.nstar.model.orderexpress.OrderState",

"com.nstar.model.orderexpress.OrderType",

"com.nstar.model.orderexpress.Repository",

"com.nstar.model.orderexpress.RepositoryType",

"com.nstar.model.orderexpress.RestInfo",

"com.nstar.model.orderexpress.UserInfo",

"com.nstar.model.orderexpress.UserLevel",

"com.nstar.model.orderexpress.UserType"

};

for(int i=0;i

//Class c = Class.forName(pojos[i]);

//System.out.println("registerClassAlias('"+pojos[i]+"',com.nstar.orderexpress.vo."+c.getSimpleName()+"VO);");

VoUtils.generateAsFile(pojos[i],"com.nstar.orderexpress.vo","C:/temp/");

}

}

}

测试时可以随便找个Java对象来测试,下面是其中生成的一个文件(OrderTypeVO)的内容:

package com.nstar.orderexpress.vo

{

public class OrderTypeVO

{

private var _orderTypeId:String;

private var _name:String;

private var _remarks:String;

public function OrderTypeVO(){}

public function set orderTypeId(value:String):void{

this._orderTypeId = value;

}

public function get orderTypeId():String{

return this._orderTypeId;

}

public function set name(value:String):void{

this._name = value;

}

public function get name():String{

return this._name;

}

public function set remarks(value:String):void{

this._remarks = value;

}

public function get remarks():String{

return this._remarks;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值