我可以在不可变类中使用 StringBuilder

2024-02-01

如果我创建一个不可变的类。所有字段都必须是最终的。如果我像这样使用 stringbuilder 最终 StringBuilder s = new StringBuilder("Hello ");

,那么append函数可以追加s的值并且类不会是不可变的。请指教。


它是“浅不可变”的,因为您无法更改字段本身,但它不是fully不可变——这意味着您几乎失去了与不可变性相关的所有好处。

基本上为了实现不变性,所有组成部分都必须be自然不变,或者有时你可以使用一些可变的东西,但是a)你构建了它,所以没有其他东西可以引用它; b) 你从来没有expose对它的引用; c) 你自己永远不会改变它。

例如,您可以编写一个不可变类型,使用java.util.Date(虽然我强烈建议使用java.time) - 您只需要确保如果您想从方法返回日期,您可以克隆它而不是返回字段的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在不可变类中使用 StringBuilder 的相关文章

  • 使用 proguard 混淆文件名

    我正在使用 proguard 和 Android Studio 混淆我的 apk 当我反编译我的apk时 我可以看到很多文件 例如aaa java aab java ETC 但我项目中的所有文件都有原始名称 有没有办法混淆我的项目的文件名
  • Java LostFocus 和 InputVerifier,按反向制表符顺序移动

    我有一个 GUI 应用程序 它使用 InputVerifier 在产生焦点之前检查文本字段的内容 这都是很正常的 然而 昨天发现了一个问题 这似乎是一个错误 但我在任何地方都找不到任何提及它的地方 在我将其报告为错误之前 我想我应该问 我在
  • 我们可以有条件地声明 spring bean 吗?

    有没有一种方法可以有条件地声明 Spring bean 例如
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • Powershell 添加的字符串类型的 ParameterizedProperty Chars 属性是什么?

    请注意 C gt Get Member MemberType eq ParameterizedProperty TypeName System String Name MemberType Definition Chars Paramete
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • 检查子字符串是否在字符串列表中?

    我之前已经找到了这个问题的一些答案 但它们对于当前的Python版本来说似乎已经过时了 或者至少它们对我不起作用 我想检查字符串列表中是否包含子字符串 我只需要布尔结果 我找到了这个解决方案 word to check or wordlis
  • 为什么用scala写的代码比用java写的慢6倍?

    我不确定我在编写 scala 代码时是否犯了一些错误 问题是 The four adjacent digits in the 1000 digit number that have the greatest product are 9 9
  • getCurrentSession 在网络中休眠

    我正在使用 hibernate 和 jsp servlet 编写一个基于 Web 的应用程序 我读过有关sessionFactory getCurrentSession and sessionFactory openSession方法 我知
  • 将类转换为 JSONObject

    我有好几堂这样的课 我想将类转换为 JSONObject 格式 import java io Serializable import com google gson annotations SerializedName public cla
  • 为什么 jar 执行的通配符在 docker CMD 中不起作用?

    我有一个Dockerfile与以下CMD启动我的 Spring Boot 应用程序 FROM java 8 jre CMD java jar app file jar 当我尝试从创建的图像启动容器时 我得到 Error Unable to
  • 2^31 次方的 Java 指数错误 [重复]

    这个问题在这里已经有答案了 我正在编写一个java程序来输出2的指数幂 顺便说一句 我不能使用Math pow 但是在 2 31 和 2 32 处我得到了其他东西 另外 我不打算接受负整数 My code class PrintPowers
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • 如何自定义舍入形式

    我的问题可能看起来很简单 但仍然无法得到有效的东西 我需要自定义 Math round 舍入格式或其他格式以使其工作如下 如果数字是 1 6 他应该四舍五入到 1 如果大于或等于 1 7 他应该四舍五入到 2 0 对于所有其他带有 6 的小
  • java实现excel价格、收益率函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • 在会话即将到期之前调用方法

    我的网络应用程序有登录的用户 有一个超时 在会话过期之前 我想执行一个方法来清理一些锁 我已经实现了sessionListener但一旦我到达public void sessionDestroyed HttpSessionEvent eve
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ
  • GAE 无法部署到 App Engine

    我正在尝试从 Eclipse 发布 Web 应用程序 我在 GAE 上创建了四个项目 可以通过登录我的帐户并查看控制台来查看它们 我已经改变了appengine web xml到项目的应用程序 ID 如果我将其更改为 GAE 上第一个创建的

随机推荐

  • CircleCi 2.0 在子目录中处理项目

    我正在尝试整合我的springbootCircleCi 的教程项目 我的项目位于 Github 存储库内的子目录中 我从 CircleCi 收到以下错误 目标需要一个项目来执行 但其中没有 POM 目录 home circleci reci
  • 如何检测DrawerLayout是否开始打开?

    所以我想在导航抽屉中隐藏一些选项卡starts开放 我的代码在打开后隐藏了它们 但这不是我想要的 mDrawerToggle new ActionBarDrawerToggle this mDrawerLayout R drawable i
  • JavaScript(ES6) 将对象设置为 null 时 WeakMap 垃圾回收

    我刚刚读到 WeakMaps 通过专门使用对象作为键来利用垃圾收集 并且将对象分配给 null 相当于删除它 let planet1 name Coruscant city Galactic City let planet2 name Ta
  • 在函数类型签名中替换 => 代替 ->

    我只是观察到如果不是 gt 我写的 gt 在函数的类型签名定义中 它不会导致编译时错误 示例代码 mysum Num a gt a gt a Notice gt after the list a mysum 0 mysum x xs x m
  • dijit.Tree搜索和刷新

    我似乎无法弄清楚如何使用 ItemFileWriteStore 和 TreeStoreModel 在 dijit Tree 中进行搜索 一切都是声明性的 我使用的是 Dojo 1 7 1 这是我到目前为止所拥有的
  • VSCode 扩展修复 Python 选项卡不一致问题 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 首先 我想知道是谁决定使用基于缩进的语言的无脑天才 以及为什么他不能简单地使用分号 令人沮丧的是 Pyt
  • 使用模型时 CakePHP AJAX Json 解析错误

    我正在使用 CakePHP 2 5 3 0 开发一个应用程序 然后我偶然发现了 AJAX 的一个问题 我使用从 jQuery 到 CakePHP 的 AJAX 请求来发送用户的登录名和密码 然后 CakePHP 应该返回经过验证的 JSON
  • 展开可选 IBOutlet 值时为 Nil

    我有一个fatal error unexpectedly found nil while unwrapping an Optional value for an IBOutlet 在我的自定义视图中 我已将我的插座与XIB文件 我已经仔细检
  • 在 Objective-C 中打乱 NSString 中的字母

    我写了这个函数 它会打乱 a 的内容NSString 它似乎可以工作 但时不时会崩溃 这可能是一种迂回的方式 但我将字符放入一个数组中 随机交换数组中的元素 然后将数组转回字符串 我不确定我正在做的事情是不安全的 这会导致它崩溃 我想这可能
  • 从视图控制器返回到表视图控制器时,表视图单元格“跳转”

    我有一个TableViewController 然后单击自定义单元格会将您带到相关的WebViewController 我遇到的问题是 当我点击 返回 时WebViewController中的表视图单元格TableViewControlle
  • pandoc 文档转换失败,错误 2

    当我在 R studio 中编写 HTML 时 我得到以下结果 C Users Susan ANACON 1 Scripts pandoc RTS K512m RTS Lesson3 student utf8 md to html from
  • Ruby:KML 库?

    我正在寻找一个 ruby 库来将位置数据导出到 KML 文件中 要导出的数据主要包含带有纬度和经度的简单点 但我也希望能够导出更复杂的多边形 I tried 龟豹 http rubygems org gems kamelopard 但觉得不
  • Python __dict__

    属性 dict 应该包含用户定义的属性 但是如果我们打印 dict 一个空的类 我还会得到 module dict weakref doc 哪些是由 Python 预先填充的 dict 相应于类对象类型的属性 Now base and cl
  • 主 NSWindow 阴影不会像子窗口那样改变

    我的应用程序中的主窗口是无边框的 self window setStyleMask NSBorderlessWindowMask 从该窗口 我还打开其他子窗口 当我在其他子窗口之间单击时 我看到当该子窗口被单击并成为焦点窗口时 这些子窗口的
  • 如何使嵌套双引号在 bash 解释器中幸存下来?

    鉴于下面的上下文 是否存在任何可以插入到 WGETOPT 定义中的神奇语法 以允许 吸收 USERAGENT 变量 并且仍然允许调用 wget 命令 如下所示syntax 1 我目前已经求助于使用 eval 但我对此并不满意 但也许这是我可
  • 根据 React.Js 中第一个下拉列表中的选择填充第二个下拉列表

    我正在学习反应并努力根据从第一个下拉列表中单击的选项来填充第二个下拉列表 我在下面包含了我的代码 我认为问题在于我尝试设置的位置this state selected param tableName 我认为这行不通 但我不知道该用什么来代替
  • SVG 作为 CSS 背景 - 有没有办法重复 x 且中间没有空格?

    在基于 Webkit 和 Blink 的浏览器中 SVG 无法正确平铺 不同缩放级别的图像之间存在间隙 StackOverflow 上有许多主题解决了这个问题 所有主题都标记为已解决 但这些人一定没有足够彻底地测试他们的解决方案 我的 SV
  • Groovy Abstract ConcurrentMap 中的错误?

    抽象ConcurrentMap http grepcode sadcom file repo1 maven org maven2 org codehaus groovy groovy all 2 4 3 org codehaus groov
  • 是否可以使用VBA单击报表记录以在Access中打开相关表单

    我有一份包含工作 任务详细信息的报告 还有一个为该报告提供大部分数据的表格 鉴于报告是查看数据大图的好方法 而表单是编辑数据的最佳方法 我希望能够单击一行 并让它打开相关记录表单视图 有谁知道如何通过VBA 做到这一点 在我看来 这应该是可
  • 我可以在不可变类中使用 StringBuilder

    如果我创建一个不可变的类 所有字段都必须是最终的 如果我像这样使用 stringbuilder 最终 StringBuilder s new StringBuilder Hello 那么append函数可以追加s的值并且类不会是不可变的 请