2010-10-22 94 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對象。