Jakarta Commnos lang学习(1)——ReflectionToStringBuilder

今天开始学习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);
    }


}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值