日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java对象实例化的方式

發布時間:2023/12/6 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java对象实例化的方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java對象實例化的方式有以下幾種:
1、使用new
2、工廠模式
3、反射
4、clone()方法
5、反序列化方式

/**

  • 實現Cloneable和Serializable接口
  • */
    public class Book implements Cloneable, Serializable {
    private static final long serialVersionUID = 1L;

    private Integer serialNum; // 序列號
    private String name; // 圖書名稱

    public Book() {
    System.out.println("默認構造函數");
    }

    public Book(Integer serialNum, String name) {
    System.out.println("帶參數構造函數");
    this.serialNum = serialNum;
    this.name = name;
    }

    public int getSerialNum() {
    return serialNum;
    }
    public void setSerialNum(int serialNum) {
    this.serialNum = serialNum;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }

    @Override
    public String toString() {
    if (name == null) {
    return "書籍屬性還未填寫";
    }

    return serialNum + " : " + name;

    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
    return super.clone();
    }
    }

class BookFactory {
public static Book getInstance(Integer serialNum, String name) {
return new Book(serialNum, name);
}
}

public class Instantiation {

// 1.通過new實例化對象 public static Book newMode() {System.out.println("============================================================");System.out.println("通過new實例化對象");Book book = new Book(1, "大道揚帆");return book; }// 2.通過工廠方式實例化對象,其本質還是new,但將實例化的細節交給了工廠來處理,屏蔽了和業務代碼無關的功能,一定程度上實現了和業務代碼的解耦 public static Book factoryMode() {System.out.println("============================================================");System.out.println("通過工廠方式實例化對象");return BookFactory.getInstance(2, "大道揚帆"); }// 3.通過反射方式實例化對象 @SuppressWarnings("rawtypes") public static Book reflectMode() throws Exception {System.out.println("============================================================");System.out.println("通過反射方式實例化對象");Class[] parameterTypes = new Class[] {Integer.class, String.class};Constructor constructor = Book.class.getConstructor(parameterTypes);Book book = (Book) constructor.newInstance(3, "大道揚帆");return book; }// 3-1.通過反射方式實例化對象還有一種方式,但本質上其實和上面的一樣,但需要類本身有無參構造函數 public static Book reflectAnotherMode() throws Exception {System.out.println("============================================================");System.out.println("通過反射方式實例化對象的另外一種方式");Book book = (Book) Class.forName("instantiation.Book").newInstance();return book; }// 4.調用已存在對象的clone()方法實例化對象 public static Book cloneMode(Book book) throws Exception {System.out.println("============================================================");System.out.println("調用已存在對象的clone()方法實例化對象");Book newBook = (Book) book.clone();System.out.println("原對象和克隆對象是同一個對象嗎?" + (book == newBook));return newBook; }// 5.對象序列化后可以通過反序列化創建對象 public static Book unSerializedMode() throws Exception {System.out.println("============================================================");System.out.println("對象序列化后可以通過反序列化創建對象");Book book = new Book(5, "大道揚帆");ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(new File("D:/book.obj")));objectOutputStream.writeObject(book);ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(new File("D:/book.obj")));Book newBook = (Book) objectInputStream.readObject();System.out.println("原對象和反序列化的對象是同一個嗎?" + (book == newBook));return newBook; }public static void main(String[] args) throws Exception {System.out.println(Instantiation.newMode());System.out.println(Instantiation.factoryMode());System.out.println(Instantiation.reflectMode());System.out.println(Instantiation.reflectAnotherMode());Book book = new Book(4, "大道揚帆");System.out.println(Instantiation.cloneMode(book));System.out.println(Instantiation.unSerializedMode()); }

}

看精彩玄幻世界,盡在《大道揚帆》https://book.qidian.com/info/1012993779

轉載于:https://blog.51cto.com/13855604/2170171

總結

以上是生活随笔為你收集整理的java对象实例化的方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。