<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825769
    • 排名 - 49

    最新評論

    閱讀排行榜

    評論排行榜

    在java程序中,對象可以被顯式地或者隱式地創建.
    下面說說四種顯式的創建對象的方式:
        ●  用new語句創建對象
        ●  運用反射手段,調用java.lang.Class 或者 java.lang.reflect.Constructor 類的newInstance()實例方法
        ●  調用對象的clone()方法
        ●  運用序列化手段,調用java.io.ObjectInputStream 對象的 readObject()方法.

    例子

     

    Customer.java

    package dgut.ke.javatest;

    public class Customer implements Cloneable {

     private String name;
     private int age;
     
     public Customer() {
      this("unknown",0);
      System.out.println("call default constructor");
     }
     
     public Customer(String name,int age) {
      this.name = name;
      this.age = age;
      System.out.println("call second constructor");
     }
     
     public Object clone() throws CloneNotSupportedException {
      return super.clone();
     }
     
     public boolean equals(Object o) {
      if (this == o)
       return true;
      if (! (o instanceof Customer))
       return false;
      final Customer other = (Customer) o;
      
      if (this.name.equals(other.name) && this.age == other.age)
       return true;
      else
       return false;
     }
     
     public String toString() {
      return "customer.name = "+name+" customer.age = "+age;
     }
     /**
      * @param args
      */
     public static void main(String[] args) throws Exception{
      // 運用反射手段創建Customer對象
      Class objectClass = Class.forName("dgut.ke.javatest.Customer");
      Customer c1 = (Customer) objectClass.newInstance();
      System.out.println("c1 --> " + c1);
      
      //用new創建Customer對象
      Customer c2 = new Customer("Tom",20);
      System.out.println("c2 --> " + c2);
      
      //運用克隆手段創建Customer對象
      Customer c3 = (Customer) c2.clone();
      System.out.println("c3 --> " + c3);
      System.out.println("c2 == c3 " + (c2==c3));
      System.out.println("c2.equals(c3) " + c2.equals(c3));
     }

    }

     

    Class類的forName方法

    public static Class<?> forName(String className)
    throws ClassNotFoundException
    返回與帶有給定字符串名的類或接口相關聯的 Class 對象。調用此方法等效于:
      Class.forName(className, true, currentLoader)
    
    其中 currentLoader 表示此類的定義類加載器。

    例如,以下代碼片段返回 java.lang.Thread 類的運行時 Class 描述符。

       Class t = Class.forName("java.lang.Thread")
    

    調用 forName("X") 將導致名為 X 的類被初始化。

     

    參數:
    className - 所需類的完全限定名。
    返回:
    具有指定名的類的 Class 對象。
    拋出:
    LinkageError - 如果鏈接失敗
    ExceptionInInitializerError - 如果此方法所激發的初始化失敗
    ClassNotFoundException - 如果找不到該類

    Object類的clone()方法

    protected Object clone()
    throws CloneNotSupportedException
    創建并返回此對象的一個副本。“副本”的準確含義可能依賴于對象的類。一般來說,對于任何對象 x,如果表達式:
    x.clone() != x
    是正確的,則表達式:
    x.clone().getClass() == x.getClass()
    將為 true,但這些不是絕對條件。一般情況下是:
    x.clone().equals(x)
    將為 true,但這不是絕對條件。

    按照慣例,返回的對象應該通過調用 super.clone 獲得。如果一個類及其所有的超類(Object 除外)都遵守此約定,則 x.clone().getClass() == x.getClass()

    按照慣例,此方法返回的對象應該獨立于該對象(正被克隆的對象)。要獲得此獨立性,在 super.clone 返回對象之前,有必要對該對象的一個或多個字段進行修改。這通常意味著要復制包含正在被克隆對象的內部“深層結構”的所有可變對象,并使用對副本的引用替換對這些對象的引用。如果一個類只包含基本字段或對不變對象的引用,那么通常不需要修改 super.clone 返回的對象中的字段。

    Object 類的 clone 方法執行特定的克隆操作。首先,如果此對象的類不能實現接口 Cloneable,則會拋出 CloneNotSupportedException注意:所有的數組都被視為實現接口 Cloneable。否則,此方法會創建此對象的類的一個新實例,并像通過分配那樣,嚴格使用此對象相應字段的內容初始化該對象的所有字段;這些字段的內容沒有被自我克隆。所以,此方法執行的是該對象的“淺表復制”,而不“深層復制”操作。

    Object 類本身不實現接口 Cloneable,所以在類為 Object 的對象上調用 clone 方法將會導致在運行時拋出異常。

     

    返回:
    此實例的一個克隆。
    拋出:
    CloneNotSupportedException - 如果對象的類不支持 Cloneable 接口,則重寫 clone 方法的子類也會拋出此異常,以指示無法克隆某個實例。
    另請參見:
    Cloneable


    posted on 2007-10-29 14:12 Ke 閱讀(1484) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 一个人看的免费视频www在线高清动漫 | 亚洲午夜在线电影| 四虎成人免费大片在线| 免费91麻豆精品国产自产在线观看 | 亚洲av极品无码专区在线观看| 国产成人精品亚洲精品| 成年性午夜免费视频网站不卡| 暖暖在线视频免费视频| 日本中文字幕免费看| 亚洲一区二区三区高清在线观看| 亚洲AV无码一区东京热| 亚洲精品国产精品乱码不卞| 超pen个人视频国产免费观看| 在线免费中文字幕| 久久国产精品免费专区| 中文字幕av免费专区| 无忧传媒视频免费观看入口| 国产精品亚洲一区二区在线观看| 国产亚洲精品影视在线| 亚洲人成电影青青在线播放| 亚洲黄色网址大全| 亚洲人成电影在线天堂| 亚洲av永久无码精品秋霞电影影院 | 免费大片黄手机在线观看| 在线观看人成视频免费| 国产精品无码免费播放| 可以免费看黄视频的网站| 18禁成人网站免费观看| 日本xxxx色视频在线观看免费| 国色精品va在线观看免费视频 | 精品免费国产一区二区| 女人18毛片水真多免费播放| 久久久久国色AV免费看图片| 桃子视频在线观看高清免费完整 | 亚洲精品午夜在线观看| 亚洲综合国产精品| 久久精品国产亚洲AV香蕉| 老司机亚洲精品影院| 亚洲国产成人综合| 亚洲精品一二三区| 蜜芽亚洲av无码一区二区三区|