项目背景:录接口数据。当时的原材料是Java源代码,产出是RAP文档。在可预见的未来,Controller代码中接收一个VO,返回一个VO。OK,就是这两个对象,我先把它们序列化成JSON,然后在RAP中导入。
过程中发现需要填各种数据类型的默认值。我们都知道,任何复杂的对象都是由基本数据类型构成的。所以,这个程序理想状态比较简单,只需要将VO的所有域中是基本数据类型的直接填值,其它类型递归处理。
但是,问题来了。数据集合类型中的域不是那么简单,size不能随意填,另外范性也需要特殊关照。所以,数据集合类型也扩充进来。
接着,问题又来了。我的小伙伴写的个别VO没那么单纯。所以也成了我的特殊关照类型。我当时的内心是这样的:
console.log('照这样下去,不会马上就……');
于是,我想到了开闭原则:只要对扩展是开放的就好了。
源代码地址
private List integerList; public static void main(String[] args) throws NoSuchFieldException { IntDefaultValueGenerator intDefaultValueGenerator = new IntDefaultValueGenerator(); ListDefaultValueGenerator listDefaultValueGenerator = new ListDefaultValueGenerator(); listDefaultValueGenerator.add(intDefaultValueGenerator); ChainedDefaultValueGenerator4Context root = new ChainedDefaultValueGenerator4Context(); root.add(listDefaultValueGenerator); root.add(intDefaultValueGenerator); Field integerList = Main.class.getDeclaredField("integerList"); root.set(new Context(integerList.getType(), integerList.getGenericType())); System.out.println(root.generate()); }
简单的描述这份代码: intDefaultValueGenerator 是一个基本处理单元, listDefaultValueGenerator 有着双重身份,对于 intDefaultValueGenerator 来说它是一个容器,对于 root 来说它也是一个基本处理单元。那么程序的输出是这样的。
GeneratedValue{suc=true, value=[1]} Process finished with exit code 0
相关推荐
java代码-Java变量各类型默认值
hibernate实体映射文件字段设置默认值
Java_Date_日期时间整理 1、获取服务器端当前日期:1、获取服务器端当前日期:按照指定格式打印日期
java高级之注解 注解的概念: 注解是JDK1.5的新特性。 注解相当一种标记,是类的组成部分,可以给类携带一些额外的信息。 注解可以加在包,类,字段,方法,方法参数以及局部变量上。 注解是给编译器看的,编译器...
主要介绍了Java中八种基本数据类型的默认值 的相关资料,需要的朋友可以参考下
可选参数允许为方法的一些参数提供默认值,并允许使用者重载类型。
Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加...
主要介绍了Java成员变量默认值原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
给Select One Choice设置默认值
本代码资源是一个关于Java语言中包装类的讲解案例代码。通过使用实际的示例代码,详细讲解了包装类的定义、用法和优势。 适用人群: 有一定Java编程基础的开发者;对包装类概念感兴趣或希望加深理解的学习者。 ...
JDK8新增便利的Map默认值方法Java开发Java经验技巧共7页.pdf.zip
HelloNativeTest.java 测试本地化是否成功的类文件 instanceVar.java 定义一个实例成员变量 invokeByObject.java 对象实参传递示例程序 invokeByValue.java 传值调用示例程序 invokeMethod.java 同一个类中调用...
在一个请求分页系统中,分别采用最佳置换算法、先进先出置换算法、最近最久未使用置换算法(LRU)时,假如一个作业的页面走向为4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理块数M分别为3和4时,试计算在...
* @功能 实现功能是初始化时文本框中默认值,当鼠标移入则清空默认值;但如果用户没有输入任何值,则还原默认值;提交时候如果是默认值则清空 * @描述 基于jquery 所以使用前必须导入jquery包 * @使用方法: 1,在...
天才之作:通过泛型,对List中对象多属性排序,支持设置各属性排序方式(动态属性),看了之后绝对让你震撼!
易语言写注册表默认值源码,写注册表默认值,写注册默认值
易语言写注册表默认值.rar 易语言写注册表默认值.rar 易语言写注册表默认值.rar 易语言写注册表默认值.rar 易语言写注册表默认值.rar 易语言写注册表默认值.rar
java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...