tostring 16进制
我以前在方便的
Apache Commons ToStringBuilder上写过博客,最近有人问我,在生成的String输出中出现的看似神秘的文本是什么构成的。 询问该问题的同事正确地推测出他正在查看的是哈希码,但与他的实例的哈希码不匹配。
我解释说ToStringBuilder将十六进制格式的身份哈希码添加到其输出中。 在本文中,我将更深入地研究ToStringBuilder
对以十六进制格式显示的身份哈希码的使用。 甚至那些不使用ToStringBuilder
也可能会发现此信息很有用,因为Java的标准Object.toString()也使用有效标识其身份哈希码的十六进制表示形式。
我将从使用ToStringBuilder
一个非常简单的Java示例开始。 本示例使用下面显示的三个Java类( Person.java
, Employee.java
和Main.java
)。
人.java
package dustin.examples;
import org.apache.commons.lang.builder.ToStringBuilder;
/**
* A simple representation of a Person intended only to demonstrate Apache
* Commons ToStringBuilder.
*
* @author Dustin
*/
public class Person
{
/** Person's last name (surname). */
protected final String lastName;
/** Person's first name. */
protected final String firstName;
/**
* Parameterized constructor for obtaining an instance of Person.
*
* @param newLastName Last name of new Person instance.
* @param newFirstName First name of new Person instance.
*/
public Person(final String newLastName, final String newFirstName)
{
this.lastName = newLastName;
this.firstName = newFirstName;
}
/**
* Provide String representation of this Person instance.
* @return My String representation.
*/
@Override
public String toString()
{
final ToStringBuilder builder = new ToStringBuilder(this);
builder.append("First Name", this.firstName);
builder.append("Last Name", this.lastName);
return builder.toString();
}
}
Employee.java
package dustin.examples;
import java.util.Objects;
import org.apache.commons.lang.builder.ToStringBuilder;
/**
* Simple class intended to demonstrate ToStringBuilder.
*
* @author Dustin
*/
public class Employee extends Person
{
/** Employee ID. */
private final String employeeId;
/*