帮我生成java类的库GeneratorX
来源:互联网 发布:ubuntu vmdkmount 编辑:程序博客网 时间:2024/05/10 16:36
一个帮我生成java类的库GeneratorX
写一个标准的java类确实太累了,需要如下方法和代码段,
* 默认构造函数 和 非默认构造函数
* get set
* hascode
* toString
* equals
* implements Parcelable 需要的代码
就算你只有三个字段,等你写好了,差不多100行+,心太累所以想要一个自动帮我生成的,之前找了几个生成代码的第三方的库,帮我生成javaclass的代码的库,找到一些,但是发现对我并不合适,要么序列化不支持,要么因为类的定义的特殊导致json框架无法处理的问题,还有无法修改字段的问题杂七杂八的。
一直使用一个IDEA的插件,帮我生成一些代码,但是发现那个插件有些bug,生成的代码有时候时错误的。
于是我就自己操刀写了一个,github在此。
GeneratorX
帮助项目开发时,自动生成类的代码。
会自动生成如下代码
* 默认构造函数 和 非默认构造函数
* get set
* hascode
* toString
* equals
* implements Parcelable 需要的代码
使用
先下载jar包:点我下载
1.apt依赖
以为涉及到编译时生成,所以需要apt插件,apt是gradle的一个插件,他使注解处理器生成的代码能被Android Studio正确的引用。
教程:http://code.neenbedankt.com/gradle-android-apt-plugin/
2.gradle中使用apt依赖javapoet和jar
apt fileTree(dir: 'libs', include: ['*.jar'])//这句加的 compile fileTree(dir: 'libs', include: ['*.jar']) apt 'com.squareup:javapoet:1.4.0' compile 'com.squareup:javapoet:1.4.0'
3.添加一个注解
@SimpleGenerator public class CLName可选 implements Parcelable 如果你需要做序列化的话
开始写java代码:
当我写出如下代码,我build一下
@SimpleGeneratorpublic abstract class PersonBean implements Parcelable { public Enum s; public String name; public int age = 0; public CharSequence str;}
build 一下 自动帮我生成一个类
package com.androidyuan.model;import android.os.Parcel;import android.os.Parcelable;import android.text.TextUtils;import com.androidyuan.Helper.ClsHelper;import java.lang.CharSequence;import java.lang.Enum;import java.lang.Object;import java.lang.Override;import java.lang.String;public class PersonBeanX extends PersonBean { public static final Parcelable.Creator<PersonBeanX> CREATOR = new Parcelable.Creator<PersonBeanX>() { @Override public PersonBeanX createFromParcel(Parcel in) { return new PersonBeanX(in); } @Override public PersonBeanX[] newArray(int size) { return new PersonBeanX[size]; } }; private Enum s; private String name; private int age; private CharSequence str; public PersonBeanX() { } public PersonBeanX(Enum s, String name, int age, CharSequence str) { this.s = s; this.name = name; this.age = age; this.str = str; } public PersonBeanX(Parcel in) { this.s = Enum.valueOf(Enum.class, in.readString()); this.name = in.readString(); this.age = in.readInt(); this.str = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeSerializable(s); dest.writeInt(age); TextUtils.writeToParcel(str, dest, flags); } public void setS(Enum s) { this.s = s; } public Enum getS() { return this.s; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setAge(int age) { this.age = age; } public int getAge() { return this.age; } public void setStr(CharSequence str) { this.str = str; } public CharSequence getStr() { return this.str; } @Override public int describeContents() { return 0; } @Override public int hashCode() { return ClsHelper.hashCode(s , name , age , str); } @Override public boolean equals(Object o) { if (o == null) return false; if (o == this) return true; if (o instanceof PersonBeanX) { if (o.hashCode() == this.hashCode()) return true; } return false; } @Override public String toString() { return "PersonBeanX{"+"s = "+s+","+"name = "+name+","+"age = "+age+","+"str = "+str.toString()+"}"; }}
代码写的比较急,两周不到完成,应该有些缺陷,欢迎提issues。
鸣谢
https://github.com/square/javapoet
扫我,我给你讲段子。
- 帮我生成java类的库GeneratorX
- 请大家帮我看看Java的锁的问题。
- java困惑我1个多礼拜的问题,希望大家能帮我解决!
- (JAVA)哪位大侠帮帮我,帮我编个求最大公因值的代码
- 帮我设计一个Java系统
- JAVA高手帮我看看这道题呗!
- C++ 编译器帮你生成的函数
- 水一个:组合数学生成作业的程序,算法很垃圾,有兴趣的帮我改一下啊
- 巧用重写toString的方法,输出格式的问题留给java帮我解决吧~
- 帮我解决一个VB的问题
- 看到文章的帮我解决一下
- 帮我顶顶,朋友的,谢谢
- jconsole.exe帮了我的大忙
- 妈妈帮我拍好照的nanshan
- 谁能用java帮我实现图的m着色问题
- 公司要招人,我帮经理准备了一道面试题,考Java基础的
- 用java模仿ATM(记录的功能似乎有点问题,哪位老大帮我看看)
- 帮我理解下这个静态的代码块吧java
- 微信登录58同城代码
- 040时钟配置
- 压缩感知中的lp球:p范数最优化为什么总会导致一个稀疏的解的原因
- Maven入门(含实例教程)
- Java加密技术(七)——非对称加密算法最高级ECC
- 帮我生成java类的库GeneratorX
- java中的日志log
- LoRaWAN介绍5 对手
- webservie的学习
- RSA加解密
- Iptables drop domain dns request packet
- EChart的简单Demo
- LA 2797 Monster Trap 平面直线图(PSLG) -
- UP9616设计资料,UP9616PCB设计原理图,UP9616快充方案设计