java commons-lang

 

Jakarta Commnos lang学习(1)——ReflectionToStringBuilder

分类: Java技术   2032人阅读  评论(0)  收藏  举报
今天开始学习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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值