java实例化对象的四种方式
java实例化对象的4种方式
- 用new 语句创建对象,这是最常用的创建对象方法。
package test;public class Father {public void print() {System.out.println("我是father");}
public static void main(String[] args) {Father f = new Father();f.print();}
}
- 运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
package test;public class Father {public void print() {System.out.println("我是father");}
public static void main(String[] args) {try {Class<?> cla = Class.forName("test.Father");try {Father f = (Father)cla.newInstance();f.print();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}} catch (ClassNotFoundException e) {e.printStackTrace();}}
}
3. 调用对象的clone()方法
clone()表示克隆,使用这个实例化一个对象的前提是前面已经有一个实例化过的对象
User user1 = new User(1,"dan");User user2 = null;user2 = (User) user1.clone();
- 运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。
序列化:将对象状态转化为可保持或传输的格式的过程,被序列化的对象必须implments Serializable
反序列化:将流转化成对象的过程
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,即java对象序列,才能在网络上传送,即序列化过程;接收方则需要把字节序列再恢复为java对象,即反序列化。
package test;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;public class Father {//序列化public static void serial(String fileName) {Test t = new Test("wo");try {ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(fileName));objectOutputStream.writeObject(t);objectOutputStream.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//反序列化public static void deserialize(String fileName){ try {ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(fileName));Test t2 = (Test)inputStream.readObject();inputStream.close();t2.test();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}catch (ClassNotFoundException e) {e.printStackTrace();}}
public static void main(String[] args) {Father.serial("D:\\test.txt");System.out.println("序列化完成");Father.deserialize("D:\\test.txt");System.out.println("反序列化完成");}
}
class Test implements Serializable{public String name;public Test(String name) {this.name = name;}public void test() {System.out.println(name);}
}
(1)和(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。
java实例化对象的四种方式相关推荐
- 用spring管理和实例化对象的四种方式
用spring管理和实例化对象的四种方式 方式一:无参构造函数(最常用) 对象是spring创建,创建的对象还要交给spring容器管理 bean:豆子 id:在spring容器中Hello对象的名, ...
- Java中创建对象的四种方式
为什么80%的码农都做不了架构师?>>> Java中创建对象的四种方式 (1) 用new语句创建对象,这是最常见的创建对象的方法. (2) 运用反射手段,调用java.l ...
- Java 创建类的四种方式
Java 创建类的四种方式 对于上学期已经学习过c++的同学,是不是对另一大编程语言产生了浓厚的兴趣,对于c++的面向对象编程,又和java的面向变量有何区别,下面我们从java四种创建对象来说起. ...
- java怎样输入五个数字打一成语,Java的线程安全四种方式五个等级[1]
Java的线程安全四种方式五个等级[1]以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 四种方式 sychronized ...
- Java 实现多线程的四种方式 超详细
Java 实现多线程的四种方式 文章目录 Java 实现多线程的四种方式 一.继承 Thread 类 二.实现 Runnable 接口 三.实现 Callable 接口 四.线程池 1,Executo ...
- java创建多线程的四种方式
java多线程的创建方式是面试经常会被问到的一个问题,因此在这里我对java创建多线程的四种方式做一个简单的归纳与总结,便于复习. 一.继承Thread类创建多线程 ① 创建一个继承于Thread类的 ...
- 详解C#实例化对象的三种方式及性能对比
前言 做项目过程中有个需求要实例化两万个对象并添加到List 中,这个过程大概需要1min才能加载完(传参较多),于是开启了代码优化之旅,再此记录. 首先想到的是可能实例化比较耗时,于是开始对每种实例 ...
- Java遍历Map对象的四种方式
关于java中遍历map具体哪四种方式,请看下文详解吧. 方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. 1 2 3 4 Map<Integer, Intege ...
- java遍历多层map_Java遍历Map对象的四种方式
文章转自: https://www.cnblogs.com/fqfanqi/p/6187085.html 关于java中遍历map具体哪四种方式,请看下文详解吧. 方式一 这是最常见的并且在大多数情况 ...
- java中创建对象的方式有哪些,Java中创建对象的四种方式
四种方式: http://wenku.baidu.com/link?url=mv6VbMd3d-aCkbGMhn6rbLwFbef7v60nRbyA-thP6Y7hqtjiv0K0_kdtfOWaUj ...
最新文章
- 7-2 然后是几点 (Java)
- 数据中心行业人士如何进行继续教育
- java图片16帧动画_Java实现帧动画的实例代码
- 串口通信的基本原理----STM32
- 一步步编写操作系统 55 CPL和DPL入门2
- CSDN Markdown编辑设置图片大小
- python画柱状图-Python:Matplotlib 画曲线和柱状图(Code)
- python没有pygame_pygame安装教程全程详解
- 基于springboot的薪资管理系统设计
- 阿里巴巴Java开发手册(泰山版)【篇一】编程规约 附2: 专有名词解释 附3: 错误码列表
- 09.大数据技术之Spark
- 千个Excel文件合并为一个文件
- win10企业版跟win10专业版有什么区别,win10系统版本区别
- 效率提升98%!高海拔光伏电站运维巡检背后的AI利器
- Linux上svnserve “db/txn-current-lock: Permission denied“ 问题解决办法
- 人工智能面试总结-基础理论
- Fast Abstractive Summarization with Reinforce-Selected Sentence Rewriting
- 计算机java毕业设计 ssm学生周报管理系统(源码+论文)
- 阿里巴巴的程序员等级
- QQ旋风踏上“迷你快车”山寨路
热门文章
- java环境安装菜鸟教程,Java基础教程---JDK的安装和环境变量的配置
- python2.7安装
- [渝粤教育] 四川师范大学 信息素养:效率提升与终身学习的新引擎 参考 资料
- 产品体系建模工具软件
- 十种UI设计常用字体特效,让你的设计高大上!【萧蕊冰】
- python网易云歌词爬虫_用python爬取网易云音乐歌曲的歌词
- day09 CDN绕过漏洞回链接口探针全网扫描反向邮件
- 基于大数据的精准教学模式探究
- Python 实例教程
- python约瑟夫环单向循环链表_约瑟夫环_约瑟夫环单向循环链表_约瑟夫环c语言循环链式...