十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天就跟大家聊聊有关在Java项目中如何实现实例化,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
创新互联是一家以网络技术公司,为中小企业提供网站维护、成都网站设计、成都网站建设、网站备案、服务器租用、国际域名空间、软件开发、小程序制作等企业互联网相关业务,是一家有着丰富的互联网运营推广经验的科技公司,有着多年的网站建站经验,致力于帮助中小企业在互联网让打出自已的品牌和口碑,让企业在互联网上打开一个面向全国乃至全球的业务窗口:建站服务热线:13518219792
Java实例化的几种方法总结
Java创建有四种方式:
(1)用new 语句创建对象,这是最常用的创建对象方法。
(2)运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
(3)调用对象的clone()方法
(4)运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。
1.用new语句创建对象
User user = new User();
2.运用反射机制
根据依赖倒转原则,实际编码过程中要针对接口编程而不是具体类编程。在面向接口编程的模式中,经常用此方法来动态创建实例。如从XML配置文件中获取具体子类的类名字符串subClassName,然后根据获得的类名字符串进行实例化:
Class c = Class.forName(subClassName);
(1)java.lang.Class.newInstance()
User user = (User)c.newInstance();// 不带参数
(2)java.lang.reflect.Constructor类的newInstance()
Constructor con = c.getConstructor(String.class); User user = (User) con.newInstance("name");
public Object getNewObject(String className) throws ClassNotFoundException, InstantiationException, IllegalAccessException { //class.forName(类的全路径)、实例对象.class(属性)、实例对象getClass(),这三种方式都能得到class Class tClass=Class.forName(className); Object tObject=tClass.newInstance(); return tObject; }
3.调用对象的clone()方法
clone指克隆
User user1 = new User(1,"dan"); User user2 = null; user2 = (User) user1.clone();
4.运用反序列化手段
序列化:将对象状态转化为可保持或传输的格式的过程,被序列化的对象必须implments Serializable
反序列化:将流转化成对象的过程
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,即java对象序列,才能在网络上传送,即序列化过程;接收方则需要把字节序列再恢复为java对象,即反序列化。
import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Date; import java.lang.management.*; public class Test { //序列化对象到文件 public static void serialize(String fileName){ try { //创建一个对象输出流,讲对象输出到文件 ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(fileName)); UserInfo user=new UserInfo("renyanwei","888888",20); out.writeObject(user); //序列化一个会员对象 out.close(); } catch (Exception x) { System.out.println(x.toString()); } } //从文件反序列化到对象 public static void deserialize(String fileName){ try { //创建一个对象输入流,从文件读取对象 ObjectInputStream in=new ObjectInputStream(new FileInputStream(fileName)); //读取UserInfo对象并调用它的toString()方法 UserInfo user=(UserInfo)(in.readObject()); System.out.println(user.toString()); in.close(); } catch (Exception x) { System.out.println(x.toString()); } } public static void main(String[] args) { serialize("D:\\test.txt"); System.out.println("序列化完毕"); deserialize("D:\\test.txt"); System.out.println("反序列化完毕"); } }
(1)和(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。
看完上述内容,你们对在Java项目中如何实现实例化有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。