java commons-lang_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java commons-lang

java commons-lang

 2013/7/12 0:14:53  goahead2010  程序员俱乐部  我要评论(0)
  • 摘要:JakartaCommnoslang学习(1)——ReflectionToStringBuilder分类:Java技术2007-04-1020:292032人阅读评论(0)收藏举报importclassjunitjava测试今天开始学习JakartaCommonsLang,看的是O'Reilly的《JakartaCommonsCookbook》。ReflectionToStringBuilder类是用来实现类中的toString()方法的类,它采用Java反射机制(Reflection)
  • 标签:Java

class="link_title">Jakarta Commnos lang学习(1)——ReflectionToStringBuilder

分类:?Java技术?2032人阅读?评论(0)?收藏?举报 importclassjunitjava测试 今天开始学习Jakarta Commons Lang,看的是O'Reilly的《Jakarta Commons Cookbook》。
ReflectionToStringBuilder类是用来实现类中的toString()方法的类,它采用Java反射机制(Reflection),通过reflection包中的AccessibleObject类绕过访问控制而直接存取对象的私有成员。因此在使用该类时,要注意运行环境的安全策略。
例(取自《Jakarta Commons Cookbook》):
PoliticalCandidate类
package?sample;

import?java.math.*;
import?java.util.*;

import?org.apache.commons.lang.builder.ReflectionToStringBuilder;

public?class?PoliticalCandidate?{

????
private?String?lastName;
????
private?String?firstName;
????
private?Date?dateOfBirth;
????
private?BigDecimal?moneyRaised;
????
private?State?homeState;
????
????
public?String?toString()?{
????????
return?ReflectionToStringBuilder.toString(this);
????}

????
????
public?PoliticalCandidate(String?lastName,?String?firstName,
????????????Date?dob,?BigDecimal?money,?State?s)?
{
????????
this.lastName?=?lastName;
????????
this.firstName?=?firstName;
????????
this.dateOfBirth?=?dob;
????????
this.moneyRaised?=?money;
????????
this.homeState?=?s;
????}


????
/**
?????*?
@param?lastName?the?lastName?to?set
?????
*/

????
public?void?setLastName(String?lastName)?{
????????
this.lastName?=?lastName;
????}


????
/**
?????*?
@return?the?lastName
?????
*/

????
public?String?getLastName()?{
????????
return?lastName;
????}


????
/**
?????*?
@param?firstName?the?firstName?to?set
?????
*/

????
public?void?setFirstName(String?firstName)?{
????????
this.firstName?=?firstName;
????}


????
/**
?????*?
@return?the?firstName
?????
*/

????
public?String?getFirstName()?{
????????
return?firstName;
????}


????
/**
?????*?
@param?dateOfBirth?the?dateOfBirth?to?set
?????
*/

????
public?void?setDateOfBirth(Date?dateOfBirth)?{
????????
this.dateOfBirth?=?dateOfBirth;
????}


????
/**
?????*?
@return?the?dateOfBirth
?????
*/

????
public?Date?getDateOfBirth()?{
????????
return?dateOfBirth;
????}


????
/**
?????*?
@param?moneyRaised?the?moneyRaised?to?set
?????
*/

????
public?void?setMoneyRaised(BigDecimal?moneyRaised)?{
????????
this.moneyRaised?=?moneyRaised;
????}


????
/**
?????*?
@return?the?moneyRaised
?????
*/

????
public?BigDecimal?getMoneyRaised()?{
????????
return?moneyRaised;
????}


????
/**
?????*?
@param?homeState?the?homeState?to?set
?????
*/

????
public?void?setHomeState(State?homeState)?{
????????
this.homeState?=?homeState;
????}


????
/**
?????*?
@return?the?homeState
?????
*/

????
public?State?getHomeState()?{
????????
return?homeState;
????}

}

State类
package?sample;

import?org.apache.commons.lang.builder.ReflectionToStringBuilder;

public?class?State?{
????
????
private?String?shortName;
????
private?String?name;
????
????
public?State(String?shortName,?String?name)?{
????????
this.shortName?=?shortName;
????????
this.name?=?name;
????}

????
????
public?String?toString()?{
????????
return?ReflectionToStringBuilder.toString(this);
????}


????
/**
?????*?
@param?shortName?the?shortName?to?set
?????
*/

????
public?void?setShortName(String?shortName)?{
????????
this.shortName?=?shortName;
????}


????
/**
?????*?
@return?the?shortName
?????
*/

????
public?String?getShortName()?{
????????
return?shortName;
????}


????
/**
?????*?
@param?name?the?name?to?set
?????
*/

????
public?void?setName(String?name)?{
????????
this.name?=?name;
????}


????
/**
?????*?
@return?the?name
?????
*/

????
public?String?getName()?{
????????
return?name;
????}

}

测试采用的是JUnit3.81
/**
?*?
?
*/

package?sample;

import?java.math.*;
import?java.util.*;

import?junit.framework.TestCase;

/**
?*?
@author?gnehzuil
?*
?
*/

public?class?TestToStirng?extends?TestCase?{

????
/**
?????*?Test?method?for?{
@link?sample.PoliticalCandidate#toString()}.
?????
*/

????
public?void?testToString()?{
????????State?va?
=?new?State("VA",?"Virginia");
????????
????????Calendar?calendar?
=?new?GregorianCalendar();
????????calendar.set(Calendar.YEAR,?
1743);
????????calendar.set(Calendar.MONTH,?Calendar.APRIL);
????????calendar.set(Calendar.DAY_OF_MONTH,?
13);
????????Date?dob?
=?calendar.getTime();
????????
????????BigDecimal?moneyRaised?
=?new?BigDecimal(293829292.93);
????????
????????PoliticalCandidate?candidate?
=?
????????????
new?PoliticalCandidate("Jefferson",?"Thomas",?
????????????????????dob,?moneyRaised,?va);
????????
????????System.out.println(candidate);
????}


}
输出: PoliticalCandidate[lastName=Jefferson,firstName=Thomas,dateOfBirth=Sat Apr 13 20:16:44 CST 1743,moneyRaised=293829292.930000007152557373046875,homeState=State[shortName=VA,name=Virginia]] ? Process finished with exit code 0

?

发表评论
用户名: 匿名