java生成convert类

本文介绍了一个使用Java反射API自动生成对象转换工具类的方法,该工具可以根据指定的类名生成对应的数据转换类,实现不同JavaBean之间的相互转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public static void main(String[] args) {
        FileOutputStream fop = null;
        File file;

        try {

            Class clazz = Class.forName("demo.model.User");//根据类名获得其对应的Class对象 写上你想要的类名就是了 注意是全名 如果有包的话要加上 比如java.Lang.String
            Class clazzB = Class.forName("demo.model.UserRo");
            file = new File("D:/liangPlus/Hello-World/demo/src/main/java/demo/convert/" + firstUpper(clazz.getSimpleName()) + "Convert.java");
            fop = new FileOutputStream(file);

            // if file doesnt exists, then create it
            if (file.exists()) {
                file.delete();
                file.createNewFile();
            }else {
                file.createNewFile();
            }
            String clazzSimpleName = clazz.getSimpleName();
            String clazzBSimpleName = clazzB.getSimpleName();
            String clazzBName = firstLower(clazzB.getSimpleName());
            String clazzName = firstLower(clazz.getSimpleName());


            Field[] fields = clazz.getDeclaredFields();//根据Class对象获得属性 私有的也可以获得
            Set<String> importSet = new HashSet<String>();

            StringBuffer content = new StringBuffer("");

            content.append("package demo.convert;\n");

            importSet.add(clazz.getName());
            importSet.add(clazzB.getName());
            importSet.add("java.util.List");
            importSet.add("java.util.ArrayList");
            for(Field f : fields) {
                importSet.add(f.getType().getName());
            }

            for (String s : importSet) {
                content.append("import " + s + ";\n");
            }

            content.append("/**\ncreate by liangmeiwei's tool\n*/\n");

            //classToClassB
            content.append("public class " + clazzSimpleName + "Convert {" + "\n");
            content.append("public static " + clazzSimpleName + " " + clazzBName + "To" + clazzSimpleName + "(" + clazzBSimpleName + " " + clazzBName + ")" +"{\n");
            content.append("if("+ clazzBName +" == null){\n");
            content.append("return null;\n");
            content.append("}\n");
            content.append(clazzSimpleName + " " + clazzName  + " = new " + clazzSimpleName + "();\n");
            for(Field f : fields) {
                content.append(clazzName + ".set" + firstUpper(f.getName()) + "(" + clazzBName+".get" + firstUpper(f.getName())  +"());\n");
            }
            content.append("return " + clazzName + ";\n");
            content.append("}\n");

            //classBToClass
            content.append("public static " + clazzBSimpleName + " " + clazzName + "To" + clazzBSimpleName + "(" + clazzSimpleName + " " + clazzName + ")" +"{\n");
            content.append("if("+ clazzName +" == null){\n");
            content.append("return null;\n");
            content.append("}\n");
            content.append(clazzBSimpleName + " " + clazzBName  + " = new " + clazzBSimpleName + "();\n");
            for(Field f : fields) {
                content.append(clazzBName + ".set" + firstUpper(f.getName()) + "(" + clazzName+".get" + firstUpper(f.getName())  +"());\n");
            }
            content.append("return " + clazzBName + ";\n");
            content.append("}\n");

            //classListToClassBList
            content.append("public static List<" + clazzBSimpleName + ">" + clazzName + "ListTo" + clazzBSimpleName + "List(" + "List<" + clazzSimpleName +"> " + clazzName  +"List){\n");
            content.append("if(" + clazzName + "List == null" +"){\n");
            content.append("return null;\n");
            content.append("}\n");
            content.append("List<" + clazzBSimpleName + ">" + clazzBName + "List = new ArrayList();\n");
            content.append("for(" + clazzSimpleName + " " + clazzName + " : " + clazzName + "List" + "){\n");
            content.append(clazzBName + "List.add(" + clazzName + "To" + clazzBSimpleName + "(" + clazzName +")" + ");\n");
            content.append("}\n");
            content.append("return " + clazzBName + "List;\n");
            content.append("}\n");


            //classBListToClassList
            content.append("public static List<" + clazzSimpleName + ">" + clazzBName + "ListTo" + clazzSimpleName + "List(" + "List<" + clazzBSimpleName +"> " + clazzBName  +"List){\n");
            content.append("if(" + clazzBName + "List == null" +"){\n");
            content.append("return null;\n");
            content.append("}\n");
            content.append("List<" + clazzSimpleName + ">" + clazzName + "List = new ArrayList();\n");
            content.append("for(" + clazzBSimpleName + " " + clazzBName + " : " + clazzBName + "List" + "){\n");
            content.append(clazzName + "List.add(" + clazzBName + "To" + clazzSimpleName + "(" + clazzBName +")" + ");\n");
            content.append("}\n");
            content.append("return " + clazzName + "List;\n");

            content.append("}\n");
            content.append("}\n");

            // get the content in bytes
            byte[] contentInBytes = content.toString().getBytes();

            fop.write(contentInBytes);
            fop.flush();
            fop.close();

            System.out.println("Done");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (fop != null) {
                    fop.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static String firstUpper(String str){
        if(StringUtils.isEmpty(str)){
            return str;
        }
        return str.substring(0,1).toUpperCase() + str.substring(1);
    }

    public static String firstLower(String str){
        if(StringUtils.isEmpty(str)){
            return str;
        }
        return str.substring(0,1).toLowerCase() + str.substring(1);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值