为什么80%的码农都做不了架构师?>>>   

Java中创建对象的四种方式

(1) 用new语句创建对象,这是最常见的创建对象的方法。 
  (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 
  (3) 调用对象的clone()方法。 
  (4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

一.用new语句创建对象

Java代码   
  1. User user = new User()

二.运用反射手段  
  (1)调用java.lang.Class.newInstance()

Java代码   
  1. Class.forName(classname).newInstance()
  2. Wife wife = (Wife) Class.forName("com.java.clone.Wife").newInstance();

(2)调用java.lang.reflect.Constructor类的newInstance()

Java代码   
  1. Constructor<Wife> constructor = Wife.class.getDeclaredConstructor(int.class,String.class);
  2. Wife wife = (Wife) constructor.newInstance(1,"nihao");

三.调用对象的clone()方法  
详情参考: http://ncs123.iteye.com/blog/1775631

Java代码   
  1. Wife wife = new Wife(1,"wang");
  2. Wife wife2 = null;
  3. wife2 = (Wife) wife.clone();//运用clone()方法产生新对象

四.运用反序列化手段  
被序列化的对象必须implements Serializable

Java代码   
  1. public class BeanUtil {
  2. @SuppressWarnings("unchecked")
  3. public static <T> T cloneTo(T src) throws RuntimeException {
  4. ByteArrayOutputStream memoryBuffer = new ByteArrayOutputStream();
  5. ObjectOutputStream out = null;
  6. ObjectInputStream in = null;
  7. T dist = null;
  8. try {
  9. out = new ObjectOutputStream(memoryBuffer);
  10. out.writeObject(src);
  11. out.flush();
  12. in = new ObjectInputStream(new ByteArrayInputStream(
  13. memoryBuffer.toByteArray()));
  14. dist = (T) in.readObject();
  15. } catch (Exception e) {
  16. throw new RuntimeException(e);
  17. } finally {
  18. if (out != null)
  19. try {
  20. out.close();
  21. out = null;
  22. } catch (IOException e) {
  23. throw new RuntimeException(e);
  24. }
  25. if (in != null)
  26. try {
  27. in.close();
  28. in = null;
  29. } catch (IOException e) {
  30. throw new RuntimeException(e);
  31. }
  32. }
  33. return dist;
  34. }
  35. public static void main(String[] args){
  36. Husband husband = new Husband(1);
  37. Wife wife = new Wife(1,"jin");
  38. husband.setWife(wife);
  39. Husband husband2 = cloneTo(husband);//运用反序列生成了一个对象
  40. }
  41. }

转载于:https://my.oschina.net/sky319/blog/112634

Java中创建对象的四种方式相关推荐

  1. java中创建对象的方式有哪些,Java中创建对象的四种方式

    四种方式: http://wenku.baidu.com/link?url=mv6VbMd3d-aCkbGMhn6rbLwFbef7v60nRbyA-thP6Y7hqtjiv0K0_kdtfOWaUj ...

  2. 12月18日云栖精选夜读 | Java 中创建对象的 5 种方式!...

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...

  3. Java中创建对象的几种方式

    Java中创建对象的几种方式 1.使用new创建对象,在堆上创建. 2.克隆 3.反序列化 4.反射创建对象 5.NIO中可以使用本地方法直接分配堆外内存. 转载于:https://www.cnblo ...

  4. Java中创建对象的5种方式 -[转] http://www.codeceo.com/article/5-ways-java-create-object.html...

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...

  5. Java中创建对象的5种方式

    转载 https://www.cnblogs.com/wxd0108/p/5685817.html 作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然 ...

  6. Java中创建对象有哪几种方式,Java 中创建对象的4种方式--Java学习网

    核心提示:Java 是面向对象的语言,不可避免的,"对象"这个概念是 Java 语言的核心部分,这里来简单讨论一下在 Java 中创建一般对象的方法. 总结下来有以下4种创建对象的 ...

  7. java clone方法_干货满满:Java中创建对象的五种方式详解

    通常来说,对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为. 作为Java开发者,我们通常都是使用依赖管理系统,比如Spring去创建Java对象,但使用管理系统创建对象并不是唯一 ...

  8. Java反射之创建对象的四种方式

    Java反射之创建对象的四种方式 1.使用new关键字 2.使用Java反射机制,反射构造器 3.使用克隆方式创建对象Cloneable 4.使用序列化Serializable 1.使用Java反射机 ...

  9. Java 创建类的四种方式

    Java 创建类的四种方式 对于上学期已经学习过c++的同学,是不是对另一大编程语言产生了浓厚的兴趣,对于c++的面向对象编程,又和java的面向变量有何区别,下面我们从java四种创建对象来说起. ...

最新文章

  1. UA MATH523A 实分析3 积分理论15 乘积测度
  2. SVM中为何间隔边界的值为正负1
  3. oracle模块损坏,Oracle中模拟及修复数据块损坏
  4. Java:放心(或非常容易)
  5. 剑指Offer——求1+2..+n的和
  6. 使用between and查找时间范围时的日期边界问题
  7. Linux写出相应密码的用途,linux运维面试题中级
  8. 林肯android auto,林肯mkz仪表盘怎么设置中文
  9. Linux性能测试(UnixBench)(bench)一键脚本
  10. 天池项目总结,特征工程了解一下!
  11. 本地设置测试域名转向
  12. 【NOI2008】 赛程安排
  13. python+appium在使用swipe滑动时,报错The swipe did not complete successfully的解决办法
  14. c语言程序设计选修让我学到的东西,电子课程设计心得体会
  15. ThinkAdmin学习总结
  16. 普博也有120万房补!40万安家费+50万科启,硕士也可入教职!浙江该高校大量招人...
  17. docker portainer agent 安装
  18. 房地产稳经济作用正在显现
  19. Xz1 android p更新,终于等到:索尼XZ1/XZP港版正式推送Android 9.0更新
  20. MATLAB BPSK通信系统调制解调仿真原理及代码(二)

热门文章

  1. manjaro笔记本显卡驱动_从入门到高端!AMD Radeon RX 500系列移动显卡全解析
  2. 5.0安装没有costom mysql_mysql5.0 64位
  3. python作品_学习 Python 有些枯燥?那是你学错方法了,看这里
  4. csrf攻击原理与解决方法_信息安全之CSRF攻击
  5. 网络库urillib3
  6. 大二学生一年通过信息系统项目管理师+中级
  7. Python 应用 uWSGI + Nginx 部署
  8. CentOS7 安装 mircosoft Netcore 自测部署安装
  9. Vue+Openlayers+Draw实现画笔切换功能,切换画笔为点、线、面
  10. 信息系统项目管理师-项目合同管理考点笔记