Java创建对象的5种方式
2019-08-26 06:16:54来源:博客园 阅读 ()
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 package com.example.demo.model; 2 3 import java.io.Serializable; 4 import java.util.Objects; 5 6 public class User implements Serializable, Cloneable { 7 private static final long serialVersionUID = 1L; 8 private String id; 9 private String name; 10 private String phone; 11 12 public User(String id, String name, String phone) { 13 this.id = id; 14 this.name = name; 15 this.phone = phone; 16 } 17 18 public User() { 19 } 20 21 public String getId() { 22 return id; 23 } 24 25 public void setId(String id) { 26 this.id = id; 27 } 28 29 public String getName() { 30 return name; 31 } 32 33 public void setName(String name) { 34 this.name = name; 35 } 36 37 public String getPhone() { 38 return phone; 39 } 40 41 public void setPhone(String phone) { 42 this.phone = phone; 43 } 44 45 @Override 46 public User clone() throws CloneNotSupportedException { 47 return (User) super.clone(); 48 } 49 50 @Override 51 public boolean equals(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 @Override 61 public int hashCode() { 62 return Objects.hash(id, name, phone); 63 } 64 65 @Override 66 public String toString() { 67 return "User{" + 68 "id='" + id + '\'' + 69 ", name='" + name + '\'' + 70 ", phone='" + phone + '\'' + 71 '}'; 72 } 73 }
2.然后开始创建User对象:
1 package com.example.demo.practice; 2 3 import com.example.demo.model.User; 4 5 import java.io.FileInputStream; 6 import java.io.FileOutputStream; 7 import java.io.ObjectInputStream; 8 import java.io.ObjectOutputStream; 9 10 public class ObjectCreation { 11 private static final String FILE_NAME = "user.obj"; 12 13 public static void main(String[] args) throws Exception { 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(new FileOutputStream(FILE_NAME)); 37 oos.writeObject(user); 38 //反序列化 39 ObjectInputStream ois = new ObjectInputStream(new FileInputStream(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 true User{id='1', name='张三', phone='135****8457'}
原文链接:https://www.cnblogs.com/eunice-sun/p/11389173.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash