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);
}
}
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);
}
}
相关文章推荐
- apache.commons.lang.builder 学习(一) ToStringBuilder
- ToStringBuilder、HashCodeBuilder、EqualsBuilder、ToStringStyle、ReflectionToStringBuilder等学习
- org.apache.commons.lang.builder.ReflectionToStringBuilder类,用于将对象转换成字符串
- org.apache.commons.lang.builder.ReflectionToStringBuilder
- toString() ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE)
- ReflectionToStringBuilder.totring()
- ReflectionToStringBuilder的使用分析与优化
- [CLASS]org.apache.commons.lang.builder.ToStringBuilder
- ToStringBuilder学习(一)
- ReflectionToStringBuilder对toString的支持
- ReflectionToStringBuilder
- ToStringBuilder学习(三):abstract、子类与多态的单例模式
- ReflectionToStringBuilder的使用分析与优化
- ReflectionToStringBuilder使用
- Jakarta Commnos lang学习(7)——BeanUtils
- ToStringBuilder、HashCodeBuilder、EqualsBuilder、ToStringStyle、ReflectionToStringBuilder、CompareToBuild
- ToStringBuilder及一些commons-lang中的util类
- ToStringBuilder学习(一):常用方法介绍
- ToStringBuilder学习(一):常用方法介绍
- ToStringBuilder.reflectionToString 用法