一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男人添女人 | 午夜影院免费观看视频 | 小苹果日本在线观看 | 逼逼爱| 天天操婷婷 | 538亚洲欧美国产日韩在线精品 | 69福利区 | 成人免费播放器 | 女子监狱第二季在线观看免费完整版 | 欧美日本一道高清二区三区 | 门房秦大爷小说 | 午夜片无码区在线观看 | 亚洲男人天堂2023 | 国产成人精品免费 | 女黑人尺寸bbb | 国产在线看片护士免费视频 | 2012年免费中文视频 | 亚洲2017久无码 | a级情欲片在线观看hd | 好大好硬好深好爽想要吃奶 | 好大好深受不了了快进来 | 天天舔天天射 | 久久毛片网站 | 好湿好滑好硬好爽好深视频 | www.尤物在线 | 免费观看日本视频 | kuaibo成人播放器 | 精品视频一区二区三区免费 | 国产精品午夜久久 | 美女被躁了在线观看视频 | 女张腿男人桶羞羞漫画 | 午夜影院费试看黄 | 亚洲www在线 | 欧美va在线播放免费观看 | 暖暖日本在线观看免费 | 第一福利在线视频 | 亚色九九九全国免费视频 | 日韩精选在线 | 亚洲福利一区二区 | 亚洲va欧美va国产va天堂影 | 亚洲精品一区二区三区中文字幕 |