把java实体转成flex用的as实体

自己用的一个小工具,可以根据需要扩展


import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.Date;


public class Create4Flex {

// java的代码目录
private static String JAVA_SRC_PATH = "D:/workspace/test/src/";

// flex代码目录
private static String FLEX_SRC_PATH = "D:/workspace/test/src/";

// POJO的包路径
private static String JAVA_PACKAGE = "com.test.entity";

// 将要生成的as的value object包路径
private static String FLEX_PACKAGE = "flex.actionScript";

// 需要过滤掉以此后缀结尾的实体(因为我们用的是ibatis持久层,abator生成的实体包括两个,一个是实体本身,一个是用于拼sql的Example类,需要去掉以Example结尾的类)
private static String EXAMPLE = "Example";

/**
* @param args
*/
public static void main(String[] args) {
String srcPath = JAVA_PACKAGE.replaceAll("\\.", "/");

File dir = new File(JAVA_SRC_PATH + srcPath);
File[] files = dir.listFiles();

String name = "";
for (File file : files) {
if (!file.isDirectory() && file.isFile()){
name = file.getName();

if (name.lastIndexOf(EXAMPLE + ".java") == -1){

name = name.replaceAll(".java", "");
try {
Class clazz = Class.forName(JAVA_PACKAGE + "." + name);
createFile(clazz);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}

private static void createFile(Class clz) throws IOException{
String flexSrcPath = FLEX_PACKAGE.replaceAll("\\.", "/");

String fileName = clz.getSimpleName();
File dir = new File(FLEX_SRC_PATH + flexSrcPath);
if (!dir.exists()){
dir.mkdirs();
}
File f = new File(dir,fileName + ".as");
if (f.exists()){
f.delete();
}
f.createNewFile();

FileWriter fw = new FileWriter(f);
fw.write("package "+FLEX_PACKAGE+"\n");
fw.write("{\n");
fw.write("\t[Bindable]\n");
fw.write("\tpublic class "+fileName+"{\n");
fw.write("\t\tpublic function "+fileName+"(){}\n");
//System.out.println(fileName + ":" + clz.getDeclaredFields().length);
for (Field fd : clz.getDeclaredFields()) {
fw.write(createField(fd));
}

fw.write("\t}\n}");
fw.close();

}

private static String createField(Field fd){
String r = "\t\tpublic var ";
Class type = fd.getType();
String name = fd.getName();
if (name.equals("serialVersionUID")){
return "";
}
if (type.equals(Integer.class) || type.equals(Short.class)) {
r = r+name+":int;";
}else if (type.equals(Long.class) || type.equals(BigDecimal.class)) {
r = r+name+":Number;";
}else if (type.equals(String.class)) {
r = r+name+":String;";
}else if (type.equals(Date.class)) {
r = r+name+":Date;";
}else if (type.getName().equals("java.lang.Object")){
r = r+name+":Object;";
}else if (type.getName().equals("long")){
r = r+name+":Number;";
}else if (type.getName().equals("java.util.List")){
r = r+name+":Array;";
}else{
System.out.println(type.getName());
}
return r+"\n";
}

}

内容概要:本文系统介绍了基于C#(VS2022+.NET Core)与HALCON 24.11的工业视觉测量拟合技术,涵盖边缘提取、几何拟合、精度优化及工业部署全流程。文中详细解析了亚像素边缘提取、Tukey抗噪算法、SVD平面拟合等核心技术,并提供了汽车零件孔径测量、PCB焊点共面性检测等典型应用场景的完整代码示例。通过GPU加速、EtherCAT同步等优化策略,实现了±0.01mm级测量精度,满足ISO 1101标准。此外,文章还探讨了深度学习、量子启发式算法等前沿技术的应用前景。 适合人群:具备一定编程基础,尤其是熟悉C#和HALCON的工程师或研究人员,以及从事工业视觉测量与自动化检测领域的技术人员。 使用场景及目标:①学习如何使用C#和HALCON实现高精度工业视觉测量系统的开发;②掌握边缘提取、抗差拟合、3D点云处理等核心技术的具体实现方法;③了解工业部署中的关键技术,如GPU加速、EtherCAT同步控制、实时数据看板等;④探索基于深度学习和量子计算的前沿技术在工业视觉中的应用。 其他说明:本文不仅提供了详细的理论分析和技术实现,还附有完整的代码示例和实验数据,帮助读者更好地理解和实践。同时,文中提到的硬件选型、校准方法、精度验证等内容,为实际项目实施提供了重要参考。文章最后还给出了未来的技术演进方向和开发者行动建议,如量子-经典混合计算、自监督学习等,以及参与HALCON官方认证和开源社区的建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值