Java 中的常量返回值

2023-12-26

我有 C++ 背景,对 Java 的不可变特性感到好奇。函数的返回值可以指定为const吗? (表示返回值不可修改)

另外,为了加分,在 C++ 中,函数定义可以后缀为 const,以声明该函数不会修改任何类级别值。这在Java中也可能吗? (这意味着根据定义,函数将无法在内部更改其类状态)

非常感谢!


不,Java 的final与 C++ 有很大不同const。您不能做您所要求的任何事情。

要使对象不可变,您或多或少需要强制执行它(而不是像 C++ 中那样寻求编译器的帮助)。从http://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.html http://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.html:

以下规则定义了创建不可变对象的简单策略。 ...

  1. 不要提供“setter”方法——修改字段或字段引用的对象的方法。
  2. 使所有字段final and private.
  3. 不允许子类重写方法。最简单的方法是将类声明为final。更复杂的方法 是让构造函数private并在工厂中构造实例 方法。
  4. If the instance fields include references to mutable objects, don't allow those objects to be changed:
    • 不要提供修改可变对象的方法。
    • 不要共享对可变对象的引用。切勿存储对传递给构造函数的外部可变对象的引用;如果 必要时,创建副本并存储对副本的引用。 同样,创建内部可变对象的副本 避免在方法中返回原件是必要的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 中的常量返回值 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • Spring AspectJ 在双代理接口时失败:无法生成类的 CGLIB 子类

    我正在使用Spring的
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • Fabric - ThreadingGroup 异常停止剩余请求?

    我是 Fabric 新手 想对一些远程 SSH 服务器并行执行一系列命令 看来我应该使用 ThreadingGroup 来做到这一点 我可以做到 并且似乎有效 我唯一真正的问题是我想了解如何处理错误情况 以及如何将服务器列表作为字符串传递
  • 无法更改 UILabel 文本颜色

    我想更改 UILabel 文本颜色 但无法更改颜色 这就是我的代码的样子 UILabel categoryTitle UILabel alloc initWithFrame CGRectMake 0 0 46 16 categoryTitl
  • 无法将文件“.mdf”附加为数据库“aspnet-”

    我正在使用 Web 套接字和 SqlDependency 来构建游戏服务器 SqlDataReader 的错误表明我应该调用 SqlDependency Start 我在 Global Asax 中包含以下内容 SqlDependency
  • GraphQL 订阅:最大侦听器超出警告

    我们使用 GraphQL 订阅和 pubsub 来订阅帖子 当发生超过 10 个订阅时 我们会收到节点警告 MaxListenersExceededWarning 检测到可能的 EventEmitter 内存泄漏 是否可以提高 pubsub
  • php:获取文件内容并将文件存储在特定文件夹中

    我正在从以下位置获取文件内容file get contents php 中的函数 我想将该文件存储在特定文件夹中 我该怎么做呢 image file get contents http www affiliatewindow com log
  • 更改Apple Watch应用程序的应用程序ID

    我最近将一些应用程序从一个帐户转移到另一个帐户 当我这样做时 应用程序 ID 也转移了 但是 WatchKit 应用程序或 WatchKit 扩展的应用程序 ID 不会传输 我尝试上传 上传完成并出现在 iTunes Connect 预发行
  • sklearn.pipeline.Pipeline 到底是什么?

    我不明白如何sklearn pipeline Pipeline完全有效 里面有一些解释doc http scikit learn org stable modules generated sklearn pipeline Pipeline
  • RegisterClientScriptBlock参数在实际场景中的用法?

    https i stack imgur com dVjHt jpg https i stack imgur com dVjHt jpg 我一直不明白它的真正用法Control type key这个类的用法 一般来说 我总是使用 this G
  • 当人们谈论使用“分片”扩展网站时,他们是什么意思?

    我曾多次听到关于解决大型网站的扩展问题的 分片 技术 这种 碎片 技术是什么 为什么它这么好 卡尔 塞金有一个好博客 http codebetter com blogs karlseguin archive 2008 06 30 scale
  • 流畅的 Nhiberhate 和缺失的毫秒

    我在当前的项目中使用 Fluent Nhibernate 和 Nhibernate 我需要将时间记录到毫秒 我有这个用于我的地图 Map x gt x SystemDateTime CustomType Timestamp Not Null
  • 在 ipython 笔记本上找不到模块

    我有一个 ipython 笔记本 其开头为 import sklearn 当我运行它时 我得到 ImportError No module named sklearn 事实上 如果我在笔记本上运行以下代码片段 它不会显示 scikit le
  • 防止不断检查错误的模式?

    在 C 中 是否有一种模式可以消除不断检查调用其他函数的函数中的错误的需要 例如如果函数 foo 依次调用 a b 和 c 则在继续之前必须检查每个函数的返回值 如果 a b 或 c 也调用其他函数 这些函数也可能调用其他函数 这会留下一长
  • 有没有办法在 Scala 中从数组或列表初始化多个变量?

    我想做的基本上是 Java 代码中的以下内容 String tempStrs generateStrings final int hour Integer parseInt tempStrs 0 final int minute Integ
  • Python:用线程分割总和

    我需要进行昂贵的计算来拟合一些实验数据 拟合函数是特征模态的总和 每个特征模态都包含特定的表面积分 因为如果你按照我想到的线程化的经典方式来做的话 它会相当慢 顺便说一句 我正在使用 python 我想计算的函数是这样的 def fit f
  • 关系型 MySql 表 UPDATE 语句的基本规则:for 与 while

    我正在使用 mysql 和 php 进行第一步 因此我对正确代码优化的基本规则存有疑问 我有一个案例 我的UPDATE语句需要在一定数量的行上执行 因为它应该在关系表上执行 那么 for cicle 是否正确
  • Spark数据集写入的区别

    我在用着Spark Java 我需要知道以下写入 Hadoop 方法之间是否有任何差异 性能等 ds write mode mode format orc save path Or ds write mode mode orc path T
  • Python——最适合这项工作的 GUI 库?

    我一直在使用 WxPython 并尝试过 Tk 但似乎虽然两者都很好并且我可能会将它们用于其他项目 但它们似乎都无法完成我当前想要的事情项目 这很好 他们擅长自己所做的事情 基本上我正在寻找的是能让我制作丰富的图形 GUI 的东西 我的具体
  • 根据R中的属性表值导出栅格

    我有一个大型栅格文件 它具有关联的栅格属性表 RAT class RasterLayer dimensions 32550 13900 452445000 nrow ncol ncell resolution 1 1 x y extent
  • 如何在 SQL SERVER 中将 varchar 列转换为 bit 列

    Flag1 is a varchar值为 true 和 false 的列 我需要将其转换为位列 当我尝试这样做时 Convert Bit Flag1 它显示一个错误 Msg 245 Level 16 State 1 Line 2 Synta
  • Java 中的常量返回值

    我有 C 背景 对 Java 的不可变特性感到好奇 函数的返回值可以指定为const吗 表示返回值不可修改 另外 为了加分 在 C 中 函数定义可以后缀为 const 以声明该函数不会修改任何类级别值 这在Java中也可能吗 这意味着根据定