内容简介:(1)使用new关键字(2)反射之Class类newInstance()
1 简介
Java
是面向对象的编程语言,只要使用它,就需要创建对象。Java创建对象有六种方法,实际常用的不会这么多,这里权当是记录一下。
2 六种方法
(1)使用new关键字
Pumpkin p1 = new Pumpkin();
(2)反射之Class类newInstance()
Pumpkin p2 = Pumpkin.class.newInstance();
(3)反射之Constructor类的newInstance()
Pumpkin p3 = Pumpkin.class.getDeclaredConstructor().newInstance();
(4)Object对象的clone方法
Pumpkin p4 = (Pumpkin) p1.clone();
注意 Object
类的 clone
方法是 protected
的,在 Override
的时候,可以改成 public
,这样让其它所有类都可以调用。
注意浅拷贝和深拷贝。
(5)反序列化
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.bin")); oos.writeObject(p1); oos.close(); ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.bin")); Pumpkin p5 = (Pumpkin) ois.readObject(); ois.close();
必须要实现 Serializable
接口;
需要注意哪些字段可序列化,哪些字段不会被序列化,如何控制;
注意 serialVersionUID
的作用;
了解 Externalizable
的不同之处。
(6)使用Unsafe类
Field f = Unsafe.class.getDeclaredField("theUnsafe"); f.setAccessible(true); Unsafe unsafe = (Unsafe) f.get(null); Pumpkin p6 = (Pumpkin) unsafe.allocateInstance(Pumpkin.class);
很少用的方法,一般不用了解这个方法。
3 示例代码
示例代码如下:
package com.pkslow.basic; import sun.misc.Unsafe; import java.io.*; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; public class CreateObject { public static class Pumpkin implements Cloneable, Serializable { public Pumpkin(){ System.out.println("Constructor called"); } @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } } public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, CloneNotSupportedException, IOException, ClassNotFoundException, NoSuchFieldException { System.out.println("---start---"); System.out.println("(1) new"); Pumpkin p1 = new Pumpkin(); System.out.println("(2) Class newInstance"); Pumpkin p2 = Pumpkin.class.newInstance(); System.out.println("(3) Constructor newInstance"); Pumpkin p3 = Pumpkin.class.getDeclaredConstructor().newInstance(); System.out.println("(4) clone"); Pumpkin p4 = (Pumpkin) p1.clone(); System.out.println("(5)Serialization"); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.bin")); oos.writeObject(p1); oos.close(); ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.bin")); Pumpkin p5 = (Pumpkin) ois.readObject(); ois.close(); System.out.println("(6) Unsafe"); Field f = Unsafe.class.getDeclaredField("theUnsafe"); f.setAccessible(true); Unsafe unsafe = (Unsafe) f.get(null); Pumpkin p6 = (Pumpkin) unsafe.allocateInstance(Pumpkin.class); System.out.println("---end---"); } }
输出结果如下:
---start--- (1) new Constructor called (2) Class newInstance Constructor called (3) Constructor newInstance Constructor called (4) clone (5)Serialization (6) Unsafe ---end---
所以会执行构造函数的有:new关键字、两种反射;
不会执行构造函数的有:clone、序列化、Unsafe类。
4 总结
要学会生产对象,也要学会管理对象、回收对象。
欢迎访问 南瓜慢说 www.pkslow.com 获取更多精彩文章!
欢迎关注微信公众号< 南瓜慢说 >,将持续为你更新...
多读书,多分享;多写作,多整理。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- OC对象的本质 实例对象,类对象,元类对象
- 可迭代对象,迭代器(对象),生成器(对象)
- 重学前端学习笔记(七)--JavaScript对象:面向对象还是基于对象?
- Webform 内置对象 Session对象、Application全局对象,ViewState详细介绍
- 对象.原型链,函数.原型对象
- Java 对象组成,对象头分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web应用安全权威指南
德丸浩 / 赵文、刘斌 / 人民邮电出版社 / 2014-10 / 79
《web应用安全权威指南》系日本web安全第一人德丸浩所创,是作者从业多年的经验总结。作者首先简要介绍了web应用的安全隐患以及产生原因,然后详细介绍了web安全的基础,如http、会话管理、同源策略等。此外还重点介绍了web应用的各种安全隐患,对其产生原理及对策进行了详尽的讲解。最后对如何提高web网站的安全性和开发安全的web应用所需要的管理进行了深入的探讨。本书可操作性强,读者可以通过下载已......一起来看看 《Web应用安全权威指南》 这本书的介绍吧!