Java实例化的几种方法总结

2025-05-29 0 46

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java实例化的几种方法总结 https://www.kuaiidc.com/116977.html

相关文章

发表评论
暂无评论