什么时候应该使用布尔值而不是布尔值? [复制]

2024-03-20

什么时候应该使用布尔值而不是布尔值?我的意思是,为什么我想在应该包含“true”或“false”的变量中包含一个空值。(大多数人)一个自发的答案是,如果该值未知。即,如果我们不知道该值是真还是假。但从编程的角度来看,我认为使用布尔值可能会破坏代码,因为我们不知道里面有什么。所以,我认为使用原始类型比包装器更好。如果我错了,请纠正我。


一般来说,包装类用于需要或强烈首选对象的情况。除了这些情况之外,最好使用原始类型,因为它们的开销较低,您可以使用==等等。常见的情况有两种半:

  • 收藏。现在这是下一种情况的子集,但即使在 Java 5 之前,Collections 类也仅支持对象作为键和值,并且这一点没有改变。
  • 泛型。泛型类型只能与对象一起使用,而不能与基元一起使用,因此如果您使用“boolean”作为类型参数,它必须是包装类。例如,如果您正在使用Future,你必须使用Boolean代替boolean。 (HT@user949300)
  • ORM。从技术上讲,JPA 和其他 ORM 系统可以使用原始字段,但通常使用包装类,因为开销足够高,无论如何这并不重要,并且包装类可以表示一个NULL数据库中可能存在的值。不过,通常最好禁止空值并使用布尔值原语,因为从语义上来说,默认值通常比“未定义”更好。

由于布尔值仅限于true or false,在集合或泛型中使用它们的情况并不常见;一般来说,如果你有一个布尔值作为值,你只需使用Collection#contains反而。

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

什么时候应该使用布尔值而不是布尔值? [复制] 的相关文章

  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • 添加动态数量的监听器(Spring JMS)

    我需要添加多个侦听器 如中所述application properties文件 就像下面这样 InTopics Sample QUT4 Sample T05 Sample T01 Sample JT7 注意 这个数字可以多一些 也可以少一些
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • 如何从秘密字符串中制作 HMAC_SHA256 密钥以在 jose4j 中与 JWT 一起使用?

    我想生成 JWT 并使用 HMAC SHA256 对其进行签名 对于该任务我必须使用jose4j https bitbucket org b c jose4j wiki Home 我尝试根据秘密生成密钥 SecretKeySpec key
  • eclipse中导入项目文件夹图标

    我在 Eclipse 工作区中新导入的 Maven 项目有J and M项目文件夹顶部的图标 项目和包资源管理器 而其他导入的 Maven 项目只有一个J icon 有人可以解释其中的区别吗 该项目有J装饰器被称为 Java 项目和具有M装
  • 无法在 Spring Boot 测试中模拟 persistenceContext

    我正在使用带有 Mockito 框架的 spring boot 测试来测试我的应用程序 存储库类 EntityManager 之一作为参考 我的班级如下所示 Repository Transactional Slf4j public cla
  • 记录骆驼路线

    我的项目中有几个 Camel 上下文 如果可能的话 我想以逆向工程方式记录路线 因为我们希望保持与上下文相关的文档最新 最好的方法是什么 我们倾向于预先实际设计路线 并使用来自EIP book http www eaipatterns co
  • 内存一致性 - Java 中的happens-before关系[重复]

    这个问题在这里已经有答案了 在阅读有关内存一致性错误的 Java 文档时 我发现与创建 发生 之前 关系的两个操作相关的点 当语句调用时Thread start 每个具有 与该语句发生之前的关系也有一个 与 new 执行的每个语句之间发生的
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • 具有共享依赖项的多模块项目的 Gradle 配置

    使用 gradle 制作第一个项目 所以我研究了 spring gradle hibernate 项目如何组织 gradle 文件 并开始制作自己的项目 但是 找不到错误 为什么我的配置不起作用 子项目无法解决依赖关系 所以项目树 Root
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • 为什么java中的for-each循环中需要声明变量

    for 每个循环的通常形式是这样的 for Foo bar bars bar doThings 但如果我想保留 bar 直到循环结束 我可以not使用 foreach 循环 Foo bar null Syntax error on toke
  • 无法捕获 Spring Batch 的 ItemWriter 中的异常

    我正在编写一个 Spring Batch 流程来将数据集从一个系统迁移到另一个系统 在这种情况下 这就像使用RowMapper实现在传递给查询之前从查询构建对象ItemWriter The ItemWriter称为save我的 DAO 上的
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop

随机推荐

  • 在 ES6 中创建多个构造函数

    在 ES5 中 可以为一个类创建多个构造函数 同时使用原型保留两个类的公共部分 如下所示 function Book just creates an empty book function Book title length author
  • 无法从本地环境将 Blob 存储上传/下载到容器

    我有一个现有的函数应用程序 它具有从 sftp 下载文件 处理文件并将文件上传到 blob 存储的功能 该功能应用程序已部署在azure中并且运行正常 但是 当我从 Visual Studio 本地 运行相同的操作时 我在将文件上传到 Bl
  • 如何在 Apache Tomcat 启动中创建单例

    我需要在 Apache Tomcat 启动时创建一个单例 以便我可以使用 servlet 访问它们 单例定义 servlet 将给出什么响应 我想知道 tomcat 是否有构造函数 以便我可以添加代码以便创建单例 编辑 经过一番搜索 我发现
  • 如何将分隔字符串 split() 到 List

    我有这个代码 String lineElements try using StreamReader sr new StreamReader TestFile txt String line while line sr ReadLine nu
  • 使用出生日期计算年龄

    我正在开发一个 Android 应用程序 用于从用户提供的出生日期查找年龄 三个编辑文本 一个代表天 另外两个代表月份和年份 我从中得到了代码link http www androidsnippets com calculate age 但
  • es6 承诺吞下类型错误

    我希望浏览器在发生类型错误时显示错误消息 错误如无法读取未定义的属性 or 未定义参考 new Promise function resolve reject do stuff reject something logical is wro
  • 处理随机建筑绘图窗口问题

    我重新发布此内容是因为我第一次发布此内容时代码不正确 我已经把所有的事情都记下来了 看起来像这样 但它应该看起来像这样 任何帮助使窗户与建筑物对齐都会很棒 因为我对此很陌生 谢谢 int buildingHeights new int 12
  • 在数组中搜索匹配的字符串

    我正在寻找方法来检查字符串是否作为数组值存在于数组中是否可能 我将如何使用 PHP 来做到这一点 如果您只是想知道它是否存在 请使用in array http php net manual en function in array php
  • AmbigeousMatchException - Type.GetProperty - C# 反射

    昨天我在开发 Web 部件时遇到了一个问题 这个问题不是关于 webpart 而是关于 C 关于这个问题的背景很少 我有一个使用 Reflection 加载 WebPart 的代码 其中我得到了 AmbigouslyMatchExcepti
  • 酿造服务。无法启动服务。得到“引导失败:5:输入/输出错误”

    running brew services start mongodb community产生 Bootstrap failed 5 Input output error Error Failure while executing bin
  • int(x[base]) 如何工作?

    以下代码的输出是 int 12 5 O P 7 int 0 5 O P 0 int 10 2 O P 2 我无法理解这一点 Python 文档中说 base 部分是可选的 即它可能需要一个或两个参数 第一个参数必须是一个在引号内具有 int
  • 在 Dockercontainer 中安装 MariaDB - 需要 MariaDB Connector/C >= 3.2.4,发现版本 3.1.16

    我尝试构建以下 Dockerfile FROM python 3 10 ENV TZ Europa Berlin install google chrome RUN wget q O https dl ssl google com linu
  • ng-change 不适用于 ng-select

    我正在使用一个由以下内容填充的选择框ng options 不幸的是 我无法得到我的ng change要调用的函数 这是我的小提琴 http jsfiddle net MTfRD 1097 这是我的js var myApp angular m
  • 什么是最好的 UTF [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Spring Boot 和 Netflix Zuul 的简单反向代理

    我正在寻找使用 Spring Boot 实现一个简单的反向代理 即 轻松添加路线 能够在每个路由的基础上添加自定义身份验证 根据需要添加其他标头 我查看了提供的设施 EnableZuulProxy注释 但它似乎太重量级了 因为我不想使用 E
  • html 表格中的等高缩放单元格

    当我进行此设计时 我在使用 HTML 表格时遇到了一些问题 左侧单元格是 rowspan 2 单元格 右侧两个单元格使用 height 50 属性 以下是预期的行为 Equal height cell 1 Scaling height ce
  • 为什么我的视图右上角有一个“加号”图标?

    我正在尝试为我的应用程序实现拖放功能LazyHGridview 当我尝试将视图放到另一个视图上时 视图的右上角会显示一个绿色圆圈内的 加号 图标 struct TestView View var d GridData Binding var
  • clrscr() 无法在 VC++(VS 2008) 中工作......?

    在 VS 2008 中 我在 VC 中创建了一个空项目 并添加了一个源文件作为 include
  • iOS 共享扩展不适用于图像网址

    我有一个使用这些规则的共享扩展
  • 什么时候应该使用布尔值而不是布尔值? [复制]

    这个问题在这里已经有答案了 什么时候应该使用布尔值而不是布尔值 我的意思是 为什么我想在应该包含 true 或 false 的变量中包含一个空值 大多数人 一个自发的答案是 如果该值未知 即 如果我们不知道该值是真还是假 但从编程的角度来看