2010-10-22 96 views
0

我觉得我对包装类有一些想法。我的问题是什么时候一个方法需要对象? 只有那么我们需要使用包装类吧?通常一个方法需要一些参数,如 int add(int a); 这是“int a”原始值吗? 例如PLS包装类的怀疑

+0

[Object or primitive type]的可能重复(http://stackoverflow.com/questions/2879916/object-or-primitive-type) – 2010-10-22 06:22:38

回答

3

Java primitive typesintdoublebytebooleancharshortlong,和float

如果一个函数签名想要int,那么你传递它一个原语。例如,如果它想要Integer,它需要包装类Integer。在Java 1.5中,自动装箱可以生效并自动将原语包装到其包装类型中。取消装箱也可以发生,在这种情况下,包装类被转换为其基本等价物,以用于期望基元的方法。

class Example 
{ 
    public static void usePrimitiveInt(int i) { } 
    public static void useIntegerClass(Integer i) { } 

    public static void main(String [] args) 
    { 
     int i = 5; 
     Integer iObj = 10; 
     Example.usePrimitiveInt(i); // use primitive 
     Example.useIntegerClass(i); // autobox int to Integer 
     Example.usePrimitiveInt(iObj); // unbox iObj into primitive 
    } 
} 
0

你说你理解包装类。那么应该没有什么可以解释的。该方法需要一个包装类,当方法签名说明它。如果参数类型为Integer,则该方法需要包装类。如果int,它期望原始值。

0

请记住,包装模式的另一个名称是adapter模式。
其中一个,我们在Java看到包装图案的第一示例是原始包装类:

  • java.lang.Integer中包装INT
  • java.lang.Character中包装炭
  • 的java。 lang.Long包裹长

,当你需要的对象图元的表示,例如,当您需要将它们存储在科尔这些包装是有用的挠度。
当你需要规范不同类的通用接口时,包装器会很有用,特别是那些你不能改变的接口,因为它们可能是第三方库的一部分。

例如,假设您需要处理将要参加活动的人员列表,但是您可能拥有多个信息来源以及他们自己对某人的表示。

  1. 您的处理方法接受一个Attendee对象的列表。
  2. 第一源给你Employee对象
    2.1 EmployeeWrapper包含Employee对象和实现或扩展Attendee
  3. 第二源给你的客户对象的列表
    3的列表。1 CustomerWrapper包含Customer对象和实现或扩展Attendee
  4. 第三清单给你VendorContact对象的列表
    4.1 VendorWrapper包含VendorContact对象和实现或扩展Attendee

您现在有一个标准化表示不同类型的Attendee对象。