Answers:
通常,包装器类是“包装”或“封装”另一个类或组件的功能的任何类。通过提供基础类或组件的实现的抽象级别,这些功能很有用;例如,包装COM组件的包装器类可以管理调用COM组件的过程,而无需使用它来烦扰调用代码。它们还可以通过减少涉及的接口点数来简化基础对象的使用。通常,这可以更安全地使用基础组件。
包装器类提供了一种将原始类型用作对象的方法。对于每个基元,我们都有一个包装器类,例如,
int Integer
byte Byte
整数和字节是原始整数和字节的包装器类。当您需要将原语用作对象时,有时会受到限制,因此包装器类提供了一种称为装箱/拆箱的机制。
通过以下示例可以很好地理解概念:
double d = 135.0 d;
Double doubleWrapper = new Double(d);
int integerValue = doubleWrapper.intValue();
byte byteValue = doubleWrapper.byteValue();
string stringValue = doubleWrapper.stringValue();
这样,我们就可以使用包装器类类型将其转换为其他原始类型。当您需要将基本类型转换为对象并使用它们来获取其他基本类型时,可以使用这种类型的转换。尽管对于这种方法,您需要编写大量代码。但是,使用简单的转换技术可以实现相同的效果,因为代码段可以按以下方式实现
double d = 135.0;
int integerValue = (int) d ;
虽然将double值显式转换为整数值,也称为向下转换。
包装器类是一个像其名称一样“包装”其他东西的类。
对其的更正式定义是实现Adapter Pattern的类。这使您可以将一组API修改为更可用,更易读的形式。例如,在C#中,如果要使用本机Windows API,则有助于将其包装到符合.NET设计准则的类中。
有几种设计模式可以称为包装器类。
请参阅我对“ 代理,装饰器,适配器和桥接模式有何不同? ”的回答。
还可能需要注意的是,在某些环境中,包装类可能要做的许多事情都已由方面取代。
编辑:
通常,包装器将扩展包装器的功能,而不必担心包装器的实现,否则包装与扩展包装的类无关。一个典型的示例是在其他服务接口周围添加计时信息或日志记录功能,而不是将其添加到该接口的每个实现中。
然后,这最终成为Aspect编程的典型示例。在方面编程中,您定义了一个切入点,它是方法的一种正则表达式,而不是逐个函数地逐个接口地添加样板日志,然后声明要在所有方法匹配之前,之后或周围执行的方法切入点。可以说,方面编程是Decorator模式的一种用法,包装器类也可以用于Decorator模式,但是这两种技术都有其他用途。
包装器类是包装另一个类并在客户端和要包装的原始类之间提供抽象的类。
包装器类通常是将对象作为私有属性的类。包装器实现了该私有对象的API,因此可以将其作为参数传递给私有对象。
假设您有一个集合,并且想要在向其添加对象时使用某种形式的翻译-您编写了一个包含所有集合方法的包装器类。调用add()时,包装程序将转换参数,而不仅仅是将其传递到私有集合中。
包装器可以在任何可以使用集合的地方使用,私有对象仍然可以有其他对象引用它并读取它。
Java编程为每种原始数据类型提供包装器类,以将原始数据类型转换为对应于包装器类的对象。
包装器类的出现是为了满足程序员的基本需求-即在仅允许对象的地方使用原始值。顾名思义,包装器类将原始值包裹起来并将其保存在Object中。因此,在所有不允许使用原语的地方(例如泛型,哈希映射键,Arraylist等),程序员现在可以选择提供这些原语值作为其对应的包装器类型。
此外,这些包装器类型具有许多实用程序方法,可用于从原始类型转换为对应的包装器类型,然后从字符串转换为包装器类型并返回。
我在我的博客中写了一篇有关包装器类的详细文章,深入解释了包装器类型的概念-http: //www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ ((此博客归我所有)
我目前在我的项目中使用了包装器类,并从中获得了主要的好处(只是扩大主题说明的一项好处):
异常处理:我的主类(另一个类包装)具有一些在发生异常时抛出异常的方法,因此我创建了一个包装类来处理异常并立即记录它们。因此,在我的主要范围内,没有异常处理。我只是调用一个方法并做某事。
易于使用:我可以轻松启动该对象。通常,启动阶段包括许多步骤。
代码可读性:当另一个程序员打开我的代码时,代码看起来非常清晰并且易于操作。
隐藏详细信息:如果您正在生成另一个程序员将要使用的类,则可以包装诸如“错误处理,异常处理,日志消息等...”之类的详细信息,以便程序员不必处理混乱,只是简单地使用方法。
包装器类是仅用于保存某些东西并为其添加一些功能的类。在Java中,由于原语(例如ints,floats,chars ...)不是对象,因此,如果要像对待原语一样,则必须使用包装器类。假设您要创建一个整数类型的Vector,则问题是Vector仅包含对象而不是原始对象。因此,您要做的就是将所有int放入Integer包装器中并使用它。例:
int number = 5;
Integer numberWrapped = new Integer(number);
//now you have the int in an object.
//and this is how to access the int value that is being wrapped.
int again = numberWrapped.intValue();
包装器是一个类,用于在不同平台之间的两个不同应用程序之间进行通信