Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用包装类优于原语的好处_Java_Wrapper - Fatal编程技术网

在Java中使用包装类优于原语的好处

在Java中使用包装类优于原语的好处,java,wrapper,Java,Wrapper,在一个非常抽象的层次上,我确实知道包装类创建了一个原始数据类型的对象,但我很好奇为什么我们需要使用包装类,以及它们比原始数据类型有什么好处。包装类型使原始数据具有更多的上下文含义。例如,一个整数可以是任何东西,而一个名为Hours的类给出了数字的含义,无论它在哪里使用 它们还允许编写方法,以一致和明显的方式向消费者变异所述原语。查看有关这一点的更多信息。首先,在集合中,例如,List,您不能在此处使用原语int。 实际上,任何可以处理不同对象类型的通用类/接口,如 public interfac

在一个非常抽象的层次上,我确实知道包装类创建了一个原始数据类型的对象,但我很好奇为什么我们需要使用包装类,以及它们比原始数据类型有什么好处。

包装类型使原始数据具有更多的上下文含义。例如,一个整数可以是任何东西,而一个名为Hours的类给出了数字的含义,无论它在哪里使用


它们还允许编写方法,以一致和明显的方式向消费者变异所述原语。查看有关这一点的更多信息。

首先,在集合中,例如,
List
,您不能在此处使用原语
int
。 实际上,任何可以处理不同对象类型的通用类/接口,如

public interface Callable<V> {
    V call() throws Exception;
}

原语类型只保存值,包装器类为其命名

使用类名,编译器可以为您执行一些静态检查。它使界面更有意义。您还可以在包装器类中定义一些方法来验证原语值


通常,对于一个小项目,我认为使用原语类型就可以了

包装器对象是普通对象,引用可以是
null
。这允许使用“未设置”状态,这在原语中是不可能的

Integer no = null;    // not set

您必须使用像-1这样的神奇值来指示基元变量是“未设置的”。

包装器类被设计为向基元类型添加更多功能,以便它们与通用代码兼容,使用集合框架,以及许多其他好处。但是,它们并不意味着不替换基本类型


因此,您应该仅在必要时使用包装器,例如在处理泛型时,因为创建对象会给程序增加大量开销。所以,在正常情况下,你应该坚持使用原语。

想象一下:你在玩一个游戏时需要保存状态,并且你想在不同的计算机上玩(同一个游戏),然后你决定将状态(级别)转移到另一台计算机,然后你可以从该状态继续(而不是从一开始)。。好的,如果你现在的武器状态是3,请回答问题。比如{int-wearms=1;if(你可以通过玩一些关卡来添加武器,现在是3级了)}但是你不能将它存储为对象,因为原语是不同的(存在于堆栈中)。因此,您需要将武器作为对象((解决方案:创建整数对象))
Integer no = null;    // not set

整型武器=新的整型(1){…}

那么说包装器并没有提供比原始数据类型更好的性能就足够了,它只为数据类型添加上下文含义吗?您可以查看和
Integer no = null;    // not set