为什么将布尔原始值更改为布尔对象引用?

发布于 2024-12-23 05:15:58 字数 266 浏览 2 评论 0原文

我正在阅读《Effective Java》,在第一章中,第一个示例将布尔原始值更改为布尔对象引用:

public static Boolean valueOf(boolean b) 
{
    return b ? Boolean.TRUE : Boolean.FALSE;
}

我的问题是:

  1. 布尔原始值和布尔对象引用之间有什么区别?

  2. 这样做的原因是什么?

I am reading Effective Java and in the first chapter the first example changes a boolean primitive value into a boolean object reference:

public static Boolean valueOf(boolean b) 
{
    return b ? Boolean.TRUE : Boolean.FALSE;
}

My questions are:

  1. What is the different between boolean primitive value and boolean object reference?

  2. What is the reason to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

无风消散 2024-12-30 05:15:58

您不能在泛型中使用基元。你不能这样做:

List<boolean> x;

但你可以这样做:

List<Boolean> x;

You cannot use primitives in generics. You cannot do this:

List<boolean> x;

but you can do this:

List<Boolean> x;
山色无中 2024-12-30 05:15:58

请记住,原始 boolean 有两个可能的值:truefalse。 Boolean 对象有三种:truefalsenull。这有时非常有用。

Remember that the primitive boolean has two possible values: true or false. The object Boolean has three: true, false, and null. That is sometimes very useful.

情独悲 2024-12-30 05:15:58

原语不能在所有上下文中使用。例如,当在任何集合类中使用时,需要对象类型。无论如何,这主要是通过自动装箱为您完成的。但你还是应该知道这一点,否则你有一天会被咬的。

另一件事是对象类型可以包含 null。如果您需要区分真、假和未知,使用 Boolean 可能是一个简单的解决方案。

A primitive cannot be used in all contexts. For instance, when used in any of the collection classes, an object type is required. This is mostly done for you, anyway, by auto-boxing. But you should still know about it, or you will get bitten at one point.

Another thing is that an object type can contain null. In cases where you need to differentiate between true, false and unknown, using Boolean can be an easy solution.

梦行七里 2024-12-30 05:15:58

1> Booleanboolean包装类

包装类用于表示对象时的原始值
是必须的。 维基百科

包装器 class 用于应用一些方法和计算,这是使用原始数据类型不可能实现的。

2>这取决于情况。

1> Boolean is wrapper class for boolean

Wrapper classes are used to represent primitive values when an Object
is required. Wikipedia

wrapper class is used to apply some methods and calculation, which is not possible using primitive data types.

2> it depends upon situations.

静赏你的温柔 2024-12-30 05:15:58

我相信 Boolean 最常见的用途是用于通用函数对象,不幸的是,用于反射。

例如:

boolean exists = java.security.AccessController.doPrivileged(
    new PrivilegedAction<>() {
        public Boolean run() {
            return file.exists();
        }
    }
);

(Java SE 8 中的样板代码可能更少。)

I believe the most common uses for Boolean are for use in generic function object and, unfortunately, reflection.

For instance:

boolean exists = java.security.AccessController.doPrivileged(
    new PrivilegedAction<>() {
        public Boolean run() {
            return file.exists();
        }
    }
);

(Probably less boilerplate in Java SE 8.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文