激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Java實例化的幾種方法總結

Java實例化的幾種方法總結

2020-09-17 15:10u014401141 JAVA教程

這篇文章主要介紹了Java實例化的幾種方法總結的相關資料,需要的朋友可以參考下

Java實例化的幾種方法總結

Java創建有四種方式:

(1)用new 語句創建對象,這是最常用的創建對象方法。
(2)運用反射手段,調用Java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。
(3)調用對象的clone()方法
(4)運用反序列化手段,調用java.io.ObjectInputStream對象的readObject()方法。

1.用new語句創建對象

?
1
User user = new User();

2.運用反射機制

根據依賴倒轉原則,實際編碼過程中要針對接口編程而不是具體類編程。在面向接口編程的模式中,經常用此方法來動態創建實例。如從XML配置文件中獲取具體子類的類名字符串subClassName,然后根據獲得的類名字符串進行實例化:

?
1
Class c = Class.forName(subClassName);

(1)java.lang.Class.newInstance()

?
1
User user = (User)c.newInstance();// 不帶參數

(2)java.lang.reflect.Constructor類的newInstance()

?
1
2
  Constructor con = c.getConstructor(String.class);
User user = (User) con.newInstance("name");<br>
?
1
2
3
4
5
6
7
public Object getNewObject(String className) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
    //class.forName(類的全路徑)、實例對象.class(屬性)、實例對象getClass(),這三種方式都能得到class
    Class tClass=Class.forName(className);
    Object tObject=tClass.newInstance();
    return tObject;
     
  }

3.調用對象的clone()方法

clone指克隆

?
1
2
3
User user1 = new User(1,"dan");
  User user2 = null;
  user2 = (User) user1.clone();

4.運用反序列化手段

序列化:將對象狀態轉化為可保持或傳輸的格式的過程,被序列化的對象必須implments Serializable

反序列化:將流轉化成對象的過程

當兩個進程在進行遠程通信時,彼此可以發送各種類型的數據。無論是何種類型的數據,都會以二進制序列的形式在網絡上傳送。發送方需要把這個Java對象轉換為字節序列,即java對象序列,才能在網絡上傳送,即序列化過程;接收方則需要把字節序列再恢復為java對象,即反序列化。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.io.ObjectOutputStream;  
import java.io.ObjectInputStream;  
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.util.Date;  
import java.lang.management.*;  
public class Test {  
  
  
  
  //序列化對象到文件  
  public static void serialize(String fileName){  
    try
    {  
      //創建一個對象輸出流,講對象輸出到文件  
      ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(fileName));  
  
      UserInfo user=new UserInfo("renyanwei","888888",20);  
      out.writeObject(user); //序列化一個會員對象  
  
      out.close();  
    }  
    catch (Exception x)  
    {  
      System.out.println(x.toString());  
    }  
       
  }  
  //從文件反序列化到對象  
  public static void deserialize(String fileName){  
    try
    {  
      //創建一個對象輸入流,從文件讀取對象  
      ObjectInputStream in=new ObjectInputStream(new FileInputStream(fileName));  
  
      //讀取UserInfo對象并調用它的toString()方法  
      UserInfo user=(UserInfo)(in.readObject());       
      System.out.println(user.toString());  
  
      in.close();  
    }  
    catch (Exception x)  
    {  
      System.out.println(x.toString());  
    }  
       
  }  
  
  public static void main(String[] args) {    
  
    serialize("D:\\test.txt");  
    System.out.println("序列化完畢");  
       
    deserialize("D:\\test.txt");  
    System.out.println("反序列化完畢");  
  }  
  

(1)和(2)都會明確的顯式的調用構造函數 ;(3)是在內存上對已有對象的影印,所以不會調用構造函數 ;(4)是從文件中還原類的對象,也不會調用構造函數。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/u014401141/article/details/70308032

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人毛片免费网站 | 国产资源在线播放 | 88xx成人永久免费观看 | 羞羞草视频 | 9999视频| 精品国产网站 | 九一国产精品 | 国产午夜免费视频 | 私库av在线免费观看 | 国产精品自拍av | 一区二区免费 | 欧洲成人在线视频 | 欧美黄色试片 | 最新中文字幕第一页视频 | 羞羞答答视频 | 日日鲁一鲁视频 | 国产亚洲精品yxsp | 正在播放91 | 中国hdxxxx护士爽在线观看 | 欧洲成人精品 | 中文字幕 亚洲一区 | h视频免费在线观看 | 久久狠狠高潮亚洲精品 | 91精品国产一区二区在线观看 | 色婷婷tv| 国产精品成人久久 | 色中色综合 | 亚洲电影免费观看国语版 | 精品在线免费播放 | 国产午夜精品久久久久久免费视 | 一级做a爱片性色毛片 | www69xxx| 老司机免费福利午夜入口ae58 | 久久久人成影片一区二区三区 | 欧美精品v国产精品v日韩精品 | 成人一区二区三区在线 | 鲁丝一区二区二区四区 | 国产精品99久久久久久久女警 | 一级免费在线视频 | 国产精品美女久久久久久网站 | 2021国产精品 |