Java中创建对象的5种不同方法
2016-07-27 17:07
302 查看
概述:本文列举了Java创建对象的5种方法,并介绍了它们如何与构造函数进行相互作用,如何利用这些方法的示例。
作为Java开发者,我们每天都会创建大量的对象,但是,我们总是使用管理依赖系统(如Spring框架)来创建这些对象。其实还有其他方法可以创建对象,在接下来的文章中我会进行详细介绍。
这是最常见的创建对象的方法,并且也非常简单。通过使用这种方法我们可以调用任何我们需要调用的构造函数。
我们也可以使用class类的newInstance()方法来创建对象。此newInstance()方法调用无参构造函数以创建对象。
我们可以通过newInstance() 用以下方式创建对象:
或者
与使用class类的newInstance()方法相似,java.lang.reflect.Constructor类中有一个可以用来创建对象的newInstance()函数方法。通过使用这个newInstance()方法我们也可以调用参数化构造函数和私有构造函数。
这些 newInstance() 方法被认为是创建对象的反射手段。实际上,内部类的newInstance()方法使用构造函数类的 newInstance() 方法。这就是为什么后者是首选并且使用不同的框架如Spring, Hibernate, Struts等。
实际上无论何时我们调用clone() 方法,JAVA虚拟机都为我们创建了一个新的对象并且复制了之前对象的内容到这个新的对象中。使用 clone()方法创建对象不会调用任何构造函数。
为了在对象中使用clone()方法,我们需要在其中实现可克隆类型并定义clone()方法。
无论何时我们对一个对象进行序列化和反序列化,JAVA虚拟机都会为我们创建一个单独的对象。在反序列化中,JAVA虚拟机不会使用任何构造函数来创建对象。
对一个对象进行序列化需要我们在类中实现可序列化的接口。
正如我们在以上的字节代码片段中所看到的,除第一种被转换为一个新的函数和一个 invokespecial 指令以外,其它4种方法都被调用并转换为invokevirtual。
让我们来看看准备创建对象的 Employee 类:
在下面的Java程序中我们用5种方式来创建 Employee对象。
此程序输出结果如下:
作为Java开发者,我们每天都会创建大量的对象,但是,我们总是使用管理依赖系统(如Spring框架)来创建这些对象。其实还有其他方法可以创建对象,在接下来的文章中我会进行详细介绍。
1.使用new关键字
这是最常见的创建对象的方法,并且也非常简单。通过使用这种方法我们可以调用任何我们需要调用的构造函数。
2.使用class类的newInstance方法
我们也可以使用class类的newInstance()方法来创建对象。此newInstance()方法调用无参构造函数以创建对象。我们可以通过newInstance() 用以下方式创建对象:
3.使用构造函数类的 newInstance方法
与使用class类的newInstance()方法相似,java.lang.reflect.Constructor类中有一个可以用来创建对象的newInstance()函数方法。通过使用这个newInstance()方法我们也可以调用参数化构造函数和私有构造函数。
4.使用clone方法
实际上无论何时我们调用clone() 方法,JAVA虚拟机都为我们创建了一个新的对象并且复制了之前对象的内容到这个新的对象中。使用 clone()方法创建对象不会调用任何构造函数。为了在对象中使用clone()方法,我们需要在其中实现可克隆类型并定义clone()方法。
5.使用反序列化
无论何时我们对一个对象进行序列化和反序列化,JAVA虚拟机都会为我们创建一个单独的对象。在反序列化中,JAVA虚拟机不会使用任何构造函数来创建对象。对一个对象进行序列化需要我们在类中实现可序列化的接口。
示例
让我们来看看准备创建对象的 Employee 类:相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序