java中创建对象的几种方式
来源:互联网 发布:淘宝店铺开店教程 编辑:程序博客网 时间:2024/05/22 13:43
1. 使用new
关键字
使用 new
关键字创建对象,实际上是做了两个工作,一是在内存中开辟空间,二是初始化对象。但是new
关键字只能创建非抽象对象。
2. 使用反射创建对象
反射是对于任意一个正在运行的类,都能动态获取到他的属性和方法。反射创建对象分为两种方式,一是使用Class类的new Instance()
方法,二是使用Constructor类的new Instatnce()
方法。
两者区别在于:
Class.newInstance() 只能够调用无参的构造函数,即默认的构造函数;
Constructor.newInstance() 可以根据传入的参数,调用任意构造构造函数。
3. 使用clone方法
要拷贝的对象需要实现Cloneable类,并重写clone()方法。
4. 使用反序列化方式
当序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。在反序列化时,jvm创建对象并不会调用任何构造函数。为了反序列化一个对象,需要让类实现Serializable接口。然后在使用new ObjectInputStream().readObject()
来创建对象。
下面demo:
public class Order implements Cloneable, Serializable{ private String code; private String name; @Override protected Object clone() throws CloneNotSupportedException { return (Order)super.clone(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Order order = (Order) o; if (code != null ? !code.equals(order.code) : order.code != null) return false; return name != null ? name.equals(order.name) : order.name == null; } @Override public int hashCode() { int result = code != null ? code.hashCode() : 0; result = 31 * result + (name != null ? name.hashCode() : 0); return result; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
4种方式。
public static void main(String[] args) throws Exception { // 1、使用new关键值创建对象 Order order1 = new Order(); order1.setCode("111"); order1.setName("订单1"); System.out.println(order1); // 2、使用clone Order order2 = new Order(); Object clone = order2.clone(); System.out.println(clone); // 3、使用反射 Class c = Class.forName("cn.qidd.other.Order"); Object o = c.newInstance(); System.out.println(o); // 4、反序列化 // 先序列化 Order order3 = new Order(); ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("order.obj")); os.writeObject(order3); // 再反序列化 ObjectInputStream is = new ObjectInputStream(new FileInputStream("order.obj")); Object o1 = is.readObject(); System.out.println(o1); }
阅读全文
0 0
- Java中创建对象的几种方式
- java中创建对象的几种方式
- Java中创建对象的几种方式
- Java中常见的创建对象几种方式
- Java中创建对象的几种方式
- Java中创建对象的几种方式
- Java中创建对象的几种 方式
- java中 创建对象的几种方式
- java中创建对象的几种方式
- Java创建对象的几种方式
- java创建对象的几种方式
- Java创建对象的几种方式
- java创建对象的几种方式
- java创建对象的几种方式
- java对象创建的几种方式
- java 创建对象的几种方式
- Java 创建对象的几种方式
- java创建对象的几种方式
- ubuntu安装svn
- 项目配置技巧及打包
- Spring Mybatis 事务
- ssm框架中el表达式获取model.addAttribute()值的方法
- [hihocoder1527]快速乘法
- java中创建对象的几种方式
- npm install -dev与npm install --save-dev区别
- selenium webdriver (python)的基本用法
- extjs设置一个空的属性
- Linux 终端浏览器 w3m
- 【算法】各种排序算法
- 详解 rs.open sql,conn,1,1 后数字参数的含义
- 【剑指Offer】JS实现两个队列表示一个栈
- SQLLDR CTL文件