注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 可扩展、高可用、负载均衡..
 帮助

Java中覆盖toString()


2007-12-27 10:12:58
覆盖 toString()
Object 类具有一个 toString() 方法,您创建的每个类都会继承该方法。它返回您的对象的一个 String 表示,并且对于调试非常有帮助。为了来看 toString() 的默认实现做些什么,请在 main() 中尝试这一体验:

public static void main(String[] args) {
         Adult myAdult = new Adult();
        
         myAdult.addMoney(1);
         myAdult.addmoney(5);
        
         System.out.println(myAdult);
}
我们将会在控制台中得到的结果看起来像下面这样:
intro.core.Adult@b108475c 
println() 方法在传递给它的对象上调用 toString()。因为还没有覆盖 toString(),所以得到默认的输出,即一个对象 ID。每个对象都有一个 ID,但是这并没有告诉您关于对象的太多信息。如果我们覆盖了 toString(),以便给我们提供关于 Adult 的信息的一个格式良好的形象描述,那么将会更好一些:

public String toString() {
         StringBuffer buffer = new StringBuffer();

         buffer.append("And Adult with: " + "\n");
         buffer.append("Age: " + age + "\n");
         buffer.append("Name: " + getName() + "\n");
         buffer.append("Race: " + getRace() + "\n");
         buffer.append("Gender: " + getGender() + "\n");
         buffer.append("Progress: " + getProgress() + "\n");
         buffer.append("Wallet: " + getWallet());
        
         return buffer.toString();
}
创建一个 StringBuffer 以构建对象的一个 String 表示,然后返回该 String。当重新运行时,控制台应该显示一些像下面这样的好的输出:

An Adult with:
Age: 25
Name: firstname lastname
Race: inuit
Gender: male
Progress: 0
Wallet: [1, 5]
这比一个隐含的对象 ID 要方便且有用得多。




    文章评论
 
 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: