java 创建inputstream对象_Java创建对象的5种方式

1.使用 new 关键字(最常用):

ObjectName obj = new ObjectName();

2.使用反射的Class类的newInstance()方法:

ObjectName obj = ObjectName.class.newInstance();

3.使用反射的Constructor类的newInstance()方法:

ObjectName obj = ObjectName.class.getConstructor.newInstance();

4.使用对象克隆clone()方法:

ObjectName obj = obj.clone();

5.使用反序列化(ObjectInputStream)的readObject()方法:

ObjectName obj = new ObjectInputStream(new FileInputStream(FILE_NAME)).readObject();

代码示例:

1.首先创建一个User类:

1 packagecom.example.demo.model;2

3 importjava.io.Serializable;4 importjava.util.Objects;5

6 public class User implementsSerializable, Cloneable {7 private static final long serialVersionUID = 1L;8 privateString id;9 privateString name;10 privateString phone;11

12 publicUser(String id, String name, String phone) {13 this.id =id;14 this.name =name;15 this.phone =phone;16 }17

18 publicUser() {19 }20

21 publicString getId() {22 returnid;23 }24

25 public voidsetId(String id) {26 this.id =id;27 }28

29 publicString getName() {30 returnname;31 }32

33 public voidsetName(String name) {34 this.name =name;35 }36

37 publicString getPhone() {38 returnphone;39 }40

41 public voidsetPhone(String phone) {42 this.phone =phone;43 }44

45 @Override46 public User clone() throwsCloneNotSupportedException {47 return (User) super.clone();48 }49

50 @Override51 public booleanequals(Object o) {52 if (this == o) return true;53 if (o == null || getClass() != o.getClass()) return false;54 User user =(User) o;55 return Objects.equals(id, user.id) &&

56 Objects.equals(name, user.name) &&

57 Objects.equals(phone, user.phone);58 }59

60 @Override61 public inthashCode() {62 returnObjects.hash(id, name, phone);63 }64

65 @Override66 publicString toString() {67 return "User{" +

68 "id='" + id + '\'' +

69 ", name='" + name + '\'' +

70 ", phone='" + phone + '\'' +

71 '}';72 }73 }

2.然后开始创建User对象:

1 packagecom.example.demo.practice;2

3 importcom.example.demo.model.User;4

5 importjava.io.FileInputStream;6 importjava.io.FileOutputStream;7 importjava.io.ObjectInputStream;8 importjava.io.ObjectOutputStream;9

10 public classObjectCreation {11 private static final String FILE_NAME = "user.obj";12

13 public static void main(String[] args) throwsException {14 //方式一 使用new关键字

15 User user = new User("1", "张三", "135****8457");16 System.out.println(user.toString());17

18 //方式二 使用Class类的newInstance()方法

19 User user2 = User.class.newInstance();20 user2.setName("李四");21 System.out.println(user2.toString());22

23 //方式三 使用Constructor类的newInstance()方法

24 User user3 = User.class.getConstructor().newInstance();25 user3.setName("王五");26 System.out.println(user3.toString());27

28 //方式四 使用clone()方法,前提是被克隆类必须实现Cloneable接口并且重写其clone()方法

29 User user4 =user.clone();30 System.out.println(user4.toString());31 System.out.println(user ==user4);32 System.out.println(user.equals(user4));33

34 //方式五 使用反序列化方式,调用ObjectInputStream对象的readObject()方法,前提是类需要实现Serializable接口35 //序列化

36 ObjectOutputStream oos = new ObjectOutputStream(newFileOutputStream(FILE_NAME));37 oos.writeObject(user);38 //反序列化

39 ObjectInputStream ois = new ObjectInputStream(newFileInputStream(FILE_NAME));40 User user5 =(User) ois.readObject();41 System.out.println(user5.toString());42 }43 }

输出结果如下:

User{id='1', name='张三', phone='135****8457'}

User{id='null', name='李四', phone='null'}

User{id='null', name='王五', phone='null'}

User{id='1', name='张三', phone='135****8457'}false

trueUser{id='1', name='张三', phone='135****8457'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值