您的位置:首页 > 产品设计 > UI/UE

Jakarta Commnos lang学习(1)——ReflectionToStringBuilder

2007-04-10 20:29 429 查看
今天开始学习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);


    }




}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  import class junit java 测试