当前位置:  开发笔记 > 编程语言 > 正文

StringBuffer如何通过类中没有字段的空格传递数据?

如何解决《StringBuffer如何通过类中没有字段的空格传递数据?》经验,为你挑选了1个好方法。

给定:Class没有字段,每个变量都是本地的.littleString是通过在Eclipse中重构bigString创建的:

public String bigString()
    {
        StringBuffer bob = new StringBuffer();
        this.littleString(bob);
        return bob.toString();
    }

private void littleString(final StringBuffer bob)
    {
        bob.append("Hello, I'm Bob");
    }

方法littleString不应该传回StringBuffer,但它是.什么样的黑魔法在这里?这打破了我所知道的所有封装规则.我很震惊,言语让我失望.



1> Adam Rosenfi..:

littleString没有传回对象 - 它只是使用相同的对象.局部变量bobin bigString()和参数bobin都littleString()引用同一个对象,因此如果更改其中一个对象,则更改将立即显示在另一个对象中,因为它们都是对同一对象的引用.

问题是StringBuffers是可变的并且具有与它们相关联的内部状态.某些类型的对象(例如Strings)是不可变的,因此您可以安全地将它们作为方法参数传递,并且您知道它们不会被修改.请注意,添加final关键字对此没有帮助 - 它只是确保bob永远不会被指定为引用不同的StringBuffer对象.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有