推荐2在编码过程中的减小不仅编码的量,挺easy工具上手:可适用Java反思与单探头Assert。

1 Mirror:Java反思

简单介绍

官网:http://projetos.vidageek.net/mirror/mirror/

将Java原生API提供的面向命令的语法:Class.getField/getDeclaredFields/getMethod()/getAnnotation之类的调用简化为DSL语法。訪问field/method/anntation的代码量大幅降低,更重要的是easy理解了,能够说是一眼看穿:

官网的样例,改动field的值,Java SDK的API编码:

//"target" is the object containing the field whose value you want to set.
Field toSet = null;
for (Field f : target.getClass().getDeclaredFields()) {
//Get all fields DECLARED inside the target object class
if (f.getName().equals("field")) {
toSet = f;
}
}
if (toSet != null && (toSet.getModifiers() & Modifier.STATIC) == 0) {
toSet.setAccessible(true);
toSet.set(target, value);
}

基于Mirror的API

new Mirror().on(target).set().field(fieldName).withValue(value);

这样才干愉快的编码。!

特点

Mirror常规模式下提供:

* Field的读取、改动

* Method的读取、调用

* Constructor的读取、基于Constructor创建对象

* 标注于Class上的Annatation的读取

和cglib-nodep组合模式下能够创建Java Proxy,一句话搞定:

SomeClass proxy = new Mirror().proxify(SomeClass.class)
.interceptingWith(new YourCustomMethodInterceptor());

2 AssertJ:更易用的单測Assert

在遇到AssertJ之前我用过JUnit和Hamcrest的Assert API,Hamcrest的接口强大可是那么不easy理解。

JUnit的API:麻绳提豆腐-别提了。

AssertJ支持对象指定Feild、方法返回值的断言,

// common assertions
assertThat(frodo.getName()).isEqualTo("Frodo");
assertThat(frodo).isNotEqualTo(sauron)
.isIn(fellowshipOfTheRing); // String specific assertions
assertThat(frodo.getName()).startsWith("Fro")
.endsWith("do")
.isEqualToIgnoringCase("frodo");

并且对集合对象的遍历支持的很好:遍历的时候能够自己定义过滤条件filters

// collection specific assertions
List<TolkienCharacter> fellowshipOfTheRing = ...;
assertThat(fellowshipOfTheRing).hasSize(9)
.contains(frodo, sam)
.doesNotContain(sauron);

另一个有意思的Assert特性是continue on erros:soft-assertions

具体的使用说明见:joel-costigliola.github.io/assertj/assertj-core-features-highlight.html



引入maven依赖的时候,要注意JDK版本号:

<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<!-- use 3.0.0 for Java 8 projects -->
<!-- 2.0.0 required Java 7 -->
<!-- 1.7.1 for Java 6 -->
<version>1.7.1</version>
<scope>test</scope>
</dependency>

高级版API提供Assert为Guava、Joda-Time、Neo4j、Swing的对象进行API级别推断。

版权声明:本文博主原创文章。博客,未经同意不得转载。

推荐2一个在Java编码过程中得心应手的工具的更多相关文章

  1. 使用ffmpeg视频编码过程中踩的一个坑

           今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果:                   ...

  2. Java 执行过程中的内存模型

    一.前言 本文的主要工作:尝试以时间顺序追踪一遍 Java 执行的整个过程,以及展示 JVM 中内存模型的相应变化. 本文的主要目的:希望能够通过 Java 执行过程的冰山一角,增进对编程语言工作原理 ...

  3. JAVA安装过程中出现的“javac不是内部或外部指令”的解决方法

    近来重新安装了JAVA,安装过程中出现问题,网上找到解决办法,汇总发布. 解决流程: 1.确定自己的环境变量设置没问题,没有出现遗漏 : . 等情况 (具体环境变量设置百度) 2.环境变量设置后 ,d ...

  4. java编译过程中出现了Exception in thread “main" java.lang.UnsupportedClassVersionError

    原因:这个问题确实是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行产生的错误. 以下是报错截图: 1.解决措施就是保证jvm(java命令)和jdk(javac命令)版本 ...

  5. 使用Eclipse开发Java Web过程中Debug调试的使用方法

    里介绍的是在Eclipse中的Debug调试. 首先右击项目选择Debug As -- Debug on Server 或者点击Server面板的小昆虫图标,启动Debug模式. 运行web项目,进行 ...

  6. java初始化过程中成员变量

    package day01; class Base{ int j; //1.j=0 Base(){ add(1); //2.调用子类add()方法 System.out.println(j); //4 ...

  7. pip:带你认识一个 Python 开发工作流程中的重要工具

    摘要:许多Python项目使用pip包管理器来管理它们的依赖项.它包含在Python安装程序中,是Python中依赖项管理的重要工具. 本文分享自华为云社区<使用Python的pip管理项目的依 ...

  8. 虚拟机win7 安装过程中遇到虚拟工具安装失败

    如果遇见这样的问题 倘若你用的是这样的镜像:cn_windows_7_enterprise_x64_dvd_x15-70741.iso 换镜像源.换镜像源.换镜像源! 换成带sp1的iso镜像:cn_ ...

  9. Java 编码规范(转)

    本文转自:http://www.javaranger.com/archives/390 文章总结出了java编码过程中的一些规范,以便参考. 1.合理组织代码层次,分层清晰:controller.lo ...

随机推荐

  1. 在Button上、下、左、右位置加入图片和文字

    转载请注明出处:http://blog.csdn.net/droyon/article/details/37564419 非常多人有如标题所述的需求,并且大多数人採用了自己定义组件攻克了需求,事实上还 ...

  2. Python学习入门基础教程(learning Python)--3.1Python的if分支语句

    本节研究一下if分支语句. if分支语句是Python下逻辑条件控制语句,用于条件执行某些语句的控制操作,当if后的条件conditon满足时,if其下的语句块被执行,但当if的控制条件condito ...

  3. 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级) 企业库验证应用程序模块之配置文件模式: ...

  4. windows phone (16) UI变换 下

    原文:windows phone (16) UI变换 下 上一篇中说到四个变换类,都是比较简单的,这里要说到四个变换类,分别为: MatrixTransfrom矩阵变换,一句标准矩阵表示的变换 Tra ...

  5. 发展合作-ASP.Net传递页面之间的值

    在合作开发中,在页面串传值的时候,遇到了一些困难.在网上搜罗了一下,发现好多的传值方式,能够简单地分下面三种. 一. URL传值 原页面的值放到目标页面的URL中.然后通过QueryString方法获 ...

  6. dpdk组态 千兆网卡 驱动 失败 原因分析及 解决方案

    dpdk版本号是1.7.1稳定版,server它是ubuntu12.04LTS x86 64bit 绑定默认驱动程序千兆网卡ixgbe失败 # ./dpdk_nic_bind.py -b ixgbe ...

  7. 远程方法调用(RMI)原理与示例 (转)

    RMI介绍 远程方法调用(RMI)顾名思义是一台机器上的程序调用另一台机器上的方法.这样可以大致知道RMI是用来干什么的,但是这种理解还不太确切.RMI是Java支撑分布式系统的基石,例如著名的EJB ...

  8. 客户端上显示csdn上的各类别下的的文章列表 (制作csdn app 三)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23597229 今天将在Android 使用Fragment,ViewPagerI ...

  9. 合作编辑室计费系统(一)-SVN常见错误

    联合室已完成,在不到一个月的时间,我们的团队:嗤.陈琛.我.这段时间都挺辛苦的.从心里这次合作,真的让我们学习了非常多,学会了接纳和承担. 在我们開始合作机房的时候,社和师哥就给我们做了功课,说你们好 ...

  10. ORA-12012: error on auto execute of job &quot;ORACLE_OCM

    ALERT日志中报错例如以下: Sun Mar 30 06:05:40 2014 Errors in file /oracle/app/oracle/diag/rdbms/zscims/zscims1 ...