zoukankan      html  css  js  c++  java
  • Java根据实体快速生成对象

    一、来源

      在写代码时总是遇到下面这种情况:

            Account account = new Account();
            account.setId();
            account.setGmtCreate();
            account.setGmtUpdate();
            account.setUsername();
            account.setPassword();
            account.setPhone();
            account.setEmail();
            account.setRoleIds();
            account.setType();
            account.setAccountNonExpired();
            account.setAccountNonLocked();
            account.setAccountExpiredDatetime();
            account.setLastPasswordResetDatetime();
            account.setTokenNonExpired();
            account.setVerificationCode();
            account.setVerificationCodeExpiredDatetime();
            account.setEnabled();
            account.setActive();
            account.setState();
    View Code

      写起来还费时,又容易遗漏,还特烦。于是抱着解决实际问题,搞了一个自动根据实体生成的工具,不是很好,以后再慢慢改进。

    二、代码

    import java.util.LinkedList;
    import java.util.List;
    import java.util.Scanner;
    
    public class Quick {
        public static void main(String[] args){
            Scanner scanner = new Scanner(System.in);
            List<String> entityList = new LinkedList<>();
            String className = "";
    
            String nextStr = null;
            while (scanner.hasNext() && !(nextStr = scanner.next()).equals("!!")) {
                entityList.add(nextStr);
            }
            for (int i= 0;i<entityList.size();i++){
                if (entityList.get(i).equals("public")){
                    if (i+2<entityList.size()&&entityList.get(i+1).equals("class")){
    
                        className = entityList.get(i+2);
                        break;
                    }
                }
            }
            if (className==""){
                System.out.println("Entity decode fail!");
                System.exit(-1);
            }
    
            List<String> setMethodList = new LinkedList<>();
            for (String str:entityList){
                if (str.startsWith("set")){
                    str = str.substring(0,str.indexOf("("));
                    setMethodList.add(str);
                }
            }
    
            //格式输出
            String lowerCaseClassName = toLowerCaseFirstOne(className);
            System.out.println(className+" "+lowerCaseClassName+" = new "+className+"();");
            for (String method:setMethodList){
                System.out.println(lowerCaseClassName+"."+method+"();");
            }
        }
        //首字母转小写
        public static String toLowerCaseFirstOne(String s){
            if(Character.isLowerCase(s.charAt(0)))
                return s;
            else
                return (new StringBuilder()).append(Character.toLowerCase(s.charAt(0))).append(s.substring(1)).toString();
        }
        //首字母转大写
        public static String toUpperCaseFirstOne(String s){
            if(Character.isUpperCase(s.charAt(0)))
                return s;
            else
                return (new StringBuilder()).append(Character.toUpperCase(s.charAt(0))).append(s.substring(1)).toString();
        }
    }

     三、格式要求

      在IDea格式化之后输入,Ctrl+shift+F

  • 相关阅读:
    【转】Java并发编程:synchronized
    【转】Java并发编程:Thread类的使用
    【转】Java并发编程:如何创建线程?
    【计算机二级C语言】卷005
    【计算机二级C语言】卷004
    【计算机二级C语言】卷003
    【计算机二级C语言】卷002
    【计算机二级C语言】卷001
    汇编窥探Swift String的底层
    【KakaJSON手册】08_其他用法
  • 原文地址:https://www.cnblogs.com/yanyouqiang/p/9942806.html
Copyright © 2011-2022 走看看