本文只是个人笔记
测试ReflectionToStringBuilder中的toString()方法,实际上是重写了对象的toString方法
@Override
public String toString() {
return ReflectionToStringBuilder.toString( this );
}
PoliticalCandidate candidate = new PoliticalCandidate( "Jefferson", "Thomas", dob, moneyRaised );
System.out.println( candidate );
输出的内容:testCommonsLang.PoliticalCandidate@9506dc4[lastName=Jefferson,firstName=Thomas,dateOfBirth=Sat Apr 13 14:55:51 CST 1743,moneyRaised=293829292.930000007152557373046875]
//测试builder下面的HashCodeBuilder,EqualsBuilder,CompareToBuilder自动生成的方法
//CompareToBuilder.reflectionCompare()这个方法比较对象中的属性是否相等,相等则返回0.否则返回其他值就是不相等。
EqualsBuilder.reflectionEquals()是直接通过反射来判断对象中的内容是否相等
public int compareTo(Object obj) {
return CompareToBuilder.reflectionCompare(this, obj);
}
@Override
public boolean equals(Object o) {
return EqualsBuilder.reflectionEquals(this, o);
}
PoliticalCandidate candidate1 = new PoliticalCandidate( "Jefferson", "Thomas", dob, moneyRaised );
PoliticalCandidate candidate2 = new PoliticalCandidate( "Jefferson", "Thomas", dob, moneyRaised );
System.out.println(candidate1.compareTo(candidate2)); 输出:0
System.out.println(candidate1.equals(candidate2)); 输出:true
使用ArrayUtils.toMap()从二维数组(Object [] [])创建一个Map,我感觉这样做没有什么意义,不如直接用put,但是可以将数组转换成map。
Object[] weightArray = new Object[][] { {"H" , new Double(1.007)},{"He", new Double( 4.002)}}
Map<String,Double> weights = ArrayUtils.toMap( weightArray );
时间用FastDateFormat,SimpleDateFormat会有线程安全的问题,日期格式可以参考博客:https://www.cnblogs.com/loveyakamoz/archive/2011/08/18/2145047.html
Date now = new Date( );
FastDateFormat fa = FastDateFormat.getInstance("yyyy年MM月dd日 HH时mm分ss秒");
System.out.println(fa.format(now));
对于DateUtils.round(),相当于四舍五入到年月日或时分秒等
Calendar.MILLISECOND
Calendar.SECOND
Calendar.MINUTE
Calendar.HOUR_OF_DAY and Calendar.HOUR
Calendar.DATE, Calendar.DAY_OF_MONTH, and Calendar.AM_PM
Calendar.MONTH
DateUtils.SEMI_MONTH
Calendar.YEAR
Calendar.ERA
FastDateFormat dtFormat = FastDateFormat.getInstance("yyyy年MM月dd日 HH时mm分ss秒");
Date now = new Date( );
Date nearestHour = DateUtils.round( now, Calendar.HOUR );
Date nearestDay = DateUtils.round( now, Calendar.DAY_OF_MONTH );
Date nearestYear = DateUtils.round( now, Calendar.YEAR );
Date nearestMinute = DateUtils.round( now, Calendar.MINUTE );
Date nearestSECOND = DateUtils.round( now, Calendar.SECOND);
Date nearestMonth = DateUtils.round( now, Calendar.MONTH);
System.out.println( "Now: " + dtFormat.format( now ) );
System.out.println( "Nearest Year: " + dtFormat.format( nearestYear ) );
System.out.println( "Nearest month: " + dtFormat.format( nearestMonth ) );
System.out.println( "Nearest Day: " + dtFormat.format( nearestDay ) );
System.out.println( "Nearest Hour: " + dtFormat.format( nearestHour ) );
System.out.println( "Nearest minute: " + dtFormat.format( nearestMinute ) );
System.out.println( "Nearest second: " + dtFormat.format( nearestSECOND ) );
输出结果:
Now: 2018年05月10日 16时31分42秒
Nearest Year: 2018年01月01日 00时00分00秒
Nearest month: 2018年05月01日 00时00分00秒
Nearest Day: 2018年05月11日 00时00分00秒
Nearest Hour: 2018年05月10日 17时00分00秒
Nearest minute: 2018年05月10日 16时32分00秒
Nearest second: 2018年05月10日 16时31分42秒
使用DateUtils.truncate()方法截取到年月日等
Date truncatedMonth = DateUtils.truncate(now, Calendar.MONTH);
Date truncatedHour = DateUtils.truncate(now, Calendar.HOUR);
System.out.println("Now: " + dtFormat.format(now));
System.out.println("Truncated Month: " + dtFormat.format(truncatedMonth));
System.out.println("Truncated Hour: " + dtFormat.format(truncatedHour));
输出结果:
Now: 2018年05月10日 16时46分55秒
Truncated Month: 2018年05月01日 00时00分00秒
Truncated Hour: 2018年05月10日 16时00分00秒