培训首页  >  培训新闻  >  软件开发新闻  >  五种方法创建java对象

五种方法创建java对象

来源:

南通博得it教育

    发表于:2022-04-11 13:55:51  

  作为Java开发人员,我们通常每天都会创建许多对象,但是我们总是使用新的或依赖管理系统(例如Spring)来创建这些对象。但是,有更多方法可以创建本文中将要研究的对象。

  用Java创建对象的共有5种核心方式,下面将以其示例加以说明,然后介绍创建对象的行的字节码。但是,有很多API可以为我们创建对象,但是这些API还将间接使用这5种核心方式之一,例如Spring BeanFactory。

  如果您将执行最后给出的程序,则会看到方法1、2、3使用构造函数创建对象,而4、5没有调用构造函数创建对象。

  1.使用新关键字

  这是创建对象的常见和常规的方法,也是一种非常简单的方法。通过使用此方法,我们可以调用要调用的任何构造函数(无参数的构造函数和参数化的)。

  Employee emp1 = new Employee();

  2.使用Class类的newInstance()方法

  我们还可以使用Class类的newInstance()方法创建一个对象。此newInstance()方法调用no-arg构造函数来创建对象。

  近整理了一份新的面试资料,里面收录了2021年各个大厂的面试题,打算跳槽的小伙伴不要错过,关注公众号后端面试那些事,回复:2022面经,即可获取

  我们可以通过newInstance()通过以下方式创建对象:

  Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee").newInstance();

  Or

  Employee emp2 = Employee.class.newInstance();

  3.使用构造方法类的newInstance()方法

  与Class类的newInstance()方法类似,java.lang.reflect.Constructor类中有一个newInstance()方法可用于创建对象。我们还可以使用此newInstance()方法来调用参数化构造函数和私有构造函数。

  Constructor constructor = Employee.class.getConstructor();Employee emp3 = constructor.newInstance();

  这两种newInstance()方法都被称为创建对象的反射方式。实际上,Class类的newInstance()方法在内部使用了Constructor类的newInstance()方法。这就是为什么好使用后一种方法,并且也将其用于诸如Spring,Hibernate,Struts等不同框架的原因。要了解这两种newInstance()方法之间的区别,请阅读使用Example在Java中通过Reflection创建对象。

  4.使用clone()方法:

  每当我们在任何对象上调用clone()时,JVM实际上都会为我们创建一个新对象,并将先前对象的所有内容复制到其中。使用clone方法创建对象不会调用任何构造函数。

  近整理了一份新的面试资料,里面收录了2021年各个大厂的面试题,打算跳槽的小伙伴不要错过,关注公众号后端面试那些事,回复:2022面经,即可获取

  要在对象上使用clone()方法,我们需要实现Cloneable并在其中定义clone()方法。

  Employee emp4 = (Employee) emp3.clone();

  Java克隆是Java社区中值得探讨的话题,它的确有其缺点,但是在对象完全满足Java克隆的强制条件之前,它仍然是创建任何对象的副本的流行和简单的方法。

  5.使用反序列化

  每当我们序列化然后反序列化一个对象时, JVM就会为我们创建一个单独的对象。在反序列化中,JVM不使用任何构造函数来创建对象。要反序列化对象,我们需要在类中实现Serializable接口。

  ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj"));Employee emp5 = (Employee) in.readObject();

  正如我们在上面的字节码中看到的那样,所有四个方法调用都转换为invokevirtual(这些方法直接处理对象的创建),除了个转换为两个调用的方法是一个是新的,另一个是调用特殊的(对构造函数的调用)。


文中图片素材来源网络,如有侵权请联系删除
分享到:

五种方法创建java对象 原创内容,请点击南通软件开发培训

  • 软件开发
  • 软件测试
  • 数据库
  • Web前端
  • 大数据
  • 人工智能
  • 零基础
  • 有HTML基础
  • 有PHP基础
  • 有C语言基础
  • 有JAVA基础
  • 其他计算机语言基础
  • 周末班
  • 全日制白班
  • 随到随学

热门课程

  • 南通博得教育JAVA软件开发培训

    询价

  • 南通java实训课程精品班

    询价

  • 南通博得java实战训练培训课程

    询价

  • 南通web前端培训课程

    询价

  • 南通python全栈工程师培训

    询价