2019独角兽企业重金招聘Python工程师标准>>>

代码里面有注释:

import java.io.*;
import java.lang.reflect.Constructor;public class Hello implements  Cloneable,Serializable{private String str;public Hello(String str){this.str = str;}public  Hello(){this.str = "class";}public static void main(String[] args) throws Exception{Hello hello = Hello.getInstanceByNew();System.out.println(hello.str);System.out.println("=============================");try{Hello instanceByClone = Hello.getInstanceByClone(hello);System.out.println(instanceByClone.str);System.out.println(hello == instanceByClone);}catch (Exception e){e.printStackTrace();}System.out.println("=============================");Hello instanceByClass = Hello.getInstanceByClass();System.out.println(instanceByClass.str);System.out.println("=============================");System.out.println("使用无参构造");Hello instanceByConstructor = Hello.getInstanceByConstructor();System.out.println(instanceByConstructor.str);System.out.println("使用有参构造");Hello instanceByConstructor2 = Hello.getInstanceByConstructor("有参构造");System.out.println(instanceByConstructor2.str);System.out.println("=============================");/*** 首先 设置一个序列化文件位置*/String path = "hello.obj";ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(path));Hello xlh = new Hello("序列化");objectOutputStream.writeObject(xlh);objectOutputStream.close();/*** 反序列化拿到对象*/Hello instanceBySerializable = Hello.getInstanceBySerializable(path);System.out.println(instanceBySerializable.hashCode()+"******************");System.out.println(xlh.str);System.out.println(instanceBySerializable.str);System.out.println("结束");}/*** 使用 new*/public static Hello  getInstanceByNew(){return new Hello("new");}/*** 使用 clone 使用此方法 class类需要继承 cloneable 接口*/public static  Hello getInstanceByClone(Hello hello) throws CloneNotSupportedException{Hello clone1 = (Hello) hello.clone();return clone1;}/*** 使用Class的 newInstance 这个newInstance方法调用无参的构造函数创建对象*/public static Hello getInstanceByClass() throws Exception{Hello hello = (Hello) Class.forName("Hello").newInstance();return hello;}/*** 使用 构造器 无参函数*/public static Hello getInstanceByConstructor() throws Exception{Constructor<Hello> constructor = Hello.class.getConstructor();Hello hello = constructor.newInstance();return hello;}/*** 使用 构造器 有参函数*/public static Hello getInstanceByConstructor(String str) throws Exception{Constructor<Hello> constructor = Hello.class.getConstructor(String.class);Hello hello = constructor.newInstance(str);return hello;}/*** 使用反序列化 获取实例化对象  对象的类要继承 Serializable 接口表示可以进行序列化*/public static Hello getInstanceBySerializable(String path) throws  Exception{ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(path));Object o = objectInputStream.readObject();objectInputStream.close();System.out.println(o.hashCode()+"******************");return  (Hello) o;}
}

转载于:https://my.oschina.net/viakiba/blog/1483852

java 实例化对象的几种姿势相关推荐

  1. 用spring管理和实例化对象的四种方式

    用spring管理和实例化对象的四种方式 方式一:无参构造函数(最常用) 对象是spring创建,创建的对象还要交给spring容器管理 bean:豆子 id:在spring容器中Hello对象的名, ...

  2. Java中对象的三种状态

    转载自   Java中对象的三种状态 Java中的对象的三种状态是和垃圾回收紧密相关的,因此有必要深究. 状态一:可触及态:从根节点开始,可以搜索到这个对象,也就是可以访问到这个对象,也有人将其称为可 ...

  3. java实例化对象后面添加花括号的理解分析

    java实例化对象后面添加花括号的理解分析 昨天在看MyBatis官方文档时看到这么一段代码 return new SQL() {{SELECT("P.ID, P.USERNAME, P.P ...

  4. 详解C#实例化对象的三种方式及性能对比

    前言 做项目过程中有个需求要实例化两万个对象并添加到List 中,这个过程大概需要1min才能加载完(传参较多),于是开启了代码优化之旅,再此记录. 首先想到的是可能实例化比较耗时,于是开始对每种实例 ...

  5. java实例化对象时程序运行顺序

    当java实例化对象时,首先先进行类加载,类加载的整个过程是将类字节码引入内存,并未类中的static变量赋值. 上篇文章: http://blog.csdn.net/kingherooo/artic ...

  6. Java实例化对象过程中的内存分配

    问题引入 这里先定义一个很不标准的"书"类,这里为了方便演示就不对类的属性进行封装了. class Book{String name; //书名double price; //价格 ...

  7. JAVA构造对象的几种方式(构建器、构造器)

    大家好,我是烤鸭: 今天说一下初始化对象的几种方式:   1.    多参数构造器 2.    构建器  3.    构造器后 + get/set方法 举个例子: 这里有个机构entity,提供一个默 ...

  8. java实例化对象的过程

    学习JAVA这门面向对象的语言,实质就是不断地创建类,并把类实例化为对象并调用方法.对于初学JAVA的人总搞清楚对象是如何实例化的,假如类之间存在继承关系,那就更糊涂了.下面我们通过两个例题来说明对象 ...

  9. 实例化对象的三种方法

    1.任何类的实例化对象可以通过Object类中的getClass()方法取得Class类对象 public class Test {public static void main(String[] a ...

最新文章

  1. django构建网页_通过解决问题的方式学习django,律师如何构建副业
  2. Android Studio动态调试Smali
  3. Vmware 没有vmnet8虚拟网卡、解决方法就是:刷机
  4. 72年属鼠48岁有一灾2020_李半仙推算:1972年虚岁48岁属鼠人,2020年干什么最能发财??...
  5. nodejs命令行执行程序_在NodeJS中编写命令行应用程序
  6. php 函数命名 特殊字符,php 特殊字符处理函数
  7. 在导出php,PHP导出通用方法
  8. 华为双系统手机可以刷成单系统_「冯站长之家」今日聚焦:重大突破!华为手机鸿蒙系统2.0,正式面世!骂华为的“喷子”,可以休矣!...
  9. python调用c++动态库_Python应用:调用C/C++动态链接库的方法详解
  10. 【前端基础】Web与Native交互之The JSBridge FAQ
  11. 8. Browser 对象 - History 对象(2)
  12. fatal error: krb5.h: 没有那个文件或目录
  13. 【POJ 3320】【尺取法】Jessica's Reading Problem【暑期 No.2】
  14. JVM监控及诊断工具命令行篇之jinfo
  15. 学习Scala:孤立对象的实现原理
  16. .net core | donet core IIS 文件路径问题
  17. 光学动作捕捉系统构成
  18. QQ浏览器 不支持html5,浏览器常见问题_浏览器高级功能_浏览器在线帮助-QQ浏览器官网...
  19. 这五本人气火爆的有声小说,能成为网络文学20年优秀有声作品吗?
  20. 主从模式的数据库搭建(主从复制)

热门文章

  1. mysql中文注释语法报错_Linux系统Python配置MySQL详细教程
  2. 生信多组学整合工具的比较研究
  3. 人类染色质开放状态数据库,ATACdb使用介绍
  4. stay hungry stay foolish原文_弟子规原文+译文+注释
  5. 光流 | 使用Horn-Schunck方法进行光流估计(附代码)
  6. 电路 | 稳压电路设计
  7. php7 参数类型限定,PHP参数类型限制 - Corwien的博客 - OSCHINA - 中文开源技术交流社区...
  8. python精要(66)—类(3)-文档字符串,注释文档
  9. python源码精要(8)-CPython源代码结构
  10. wxWidgets随笔(1)-hello,world