当前位置: 首页 > news >正文

网站产品说明书模板班级优化大师官方网站

网站产品说明书模板,班级优化大师官方网站,服务器域名多少钱,丹阳网站建设先上关键内容,所用到的代码请参考文末示例代码。一、使用new关键字创建对象这是一种最常用的创建对象的方式。Student student1 new Student();二、使用Class的newInstance()方法创建对象需要有一个无参构造方法,这个newInstance()方法调用无参的构造函…

先上关键内容,所用到的代码请参考文末示例代码。

一、使用new关键字创建对象

这是一种最常用的创建对象的方式。

Student student1 = new Student();

二、使用Class的newInstance()方法创建对象

需要有一个无参构造方法,这个newInstance()方法调用无参的构造函数创建对象。

类名.calss.newInstance( )

Student student2 = Student.class.newInstance();

该方法就是反射机制,事实上Class的newInstance()方法内部就是调用Constructor的newInstance()方法。

Class类的newInstance只能触发无参构造方法创建对象,而构造器类的newInstance能触发有参数或者任意参数的构造方法来创建对象。

三、使用Constructor类的newInstance()方法创建对象

java.lang.reflect.Constructor类里也有一个newInstance()方法可以创建对象。我们可以通过这个newInstance()方法调用有参数的和私有的构造函数。

Constructor student3 = Constructor.class.newInstance();

四、使用克隆clone()方法创建对象

Tips:要使用clone()方法,我们需要先实现Cloneable接口并实现其定义的clone()方法

无论何时我们调用一个对象的clone()方法,jvm就会创建一个新的对象,将前面对象的内容全部拷贝进去。用clone()方法创建对象并不会调用任何构造函数。

Student student4 = new Student().clone();

五、使用反序列化创建对象

Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程;

使用反序列化:当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。在反序列化时,jvm创建对象并不会调用任何构造函数。

为了反序列化一个对象,我们需要让我们的类实现Serializable接口。

ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_NAME));
// 5、使用反序列化创建对象
Object student5 = ois.readObject();

六、创建对象的5种方式调用构造器总结

创建对象的方式

是否调用了构造器

使用new关键字创建对象

Class.newInstance()

Constructor.newInstance()

clone()

反序列化

Java创建实例对象是不是必须要通过构造函数?这其实是衍生出来的一个面试题。 上面问题的答案很明显了:Java创建实例对象,并不一定必须要调用构造器的。

七、示例代码(全)

以下是本文所用到的所有示例代码。

7.1 编写Student学生类

package com.effective.chapter2.other;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Cloneable, Serializable {private String name;private Integer age;@Overridepublic Student clone() {try {Student clone = (Student) super.clone();// TODO: copy mutable state here, so the clone can't change the internals of the originalreturn clone;} catch (CloneNotSupportedException e) {throw new AssertionError();}}
}

7.2 编写测试类

package com.effective.chapter2.other;import java.io.*;
import java.lang.reflect.Constructor;public class CreateObjectTest {private static final String FILE_NAME = "student.obj";public static void main(String[] args) throws InstantiationException, IllegalAccessException, IOException {// 1、使用new关键字创建对象Student student1 = new Student();System.out.println("使用new关键字创建对象:" + student1);// 2、使用Class类的newInstance()方法创建对象Student student2 = Student.class.newInstance();System.out.println("使用Class类的newInstance()方法创建对象:" + student2);// 3、使用Constructor类的newInstance()方法创建对象Constructor student3 = Constructor.class.newInstance();System.out.println("使用Constructor类的newInstance()方法创建对象:" + student3);// 4、使用clone()方法创建对象Student student4 = student2.clone();System.out.println("使用clone()方法创建对象:" + student4);try {// Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程;// 序列化对象ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE_NAME));oos.writeObject(student1);ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_NAME));// 5、使用反序列化创建对象Object student5 = ois.readObject();System.out.println("使用反序列化创建对象:" + student5);} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}
}

完结!

http://www.hkea.cn/news/912116/

相关文章:

  • 福州网站建设 联系yanktcn 04上海百网优seo优化公司
  • 网站备案号如何获得网站建设营销推广
  • 物流网站开发公司西安 做网站
  • 商务信息网站怎么做网络视频营销策略有哪些
  • 社交做的最好的网站怎么开发一个网站
  • 教育品牌网站建设百度搜索推广和信息流推广
  • 虎门专业做网站对网络营销的认识有哪些
  • 投资理财培训网站建设抖音引流推广一个30元
  • 做景观设施的网站网络营销推广要求
  • 携程网站建设进度及实施过程网络营销的缺点及建议
  • 石家庄网站建设哪家专业中国联通腾讯
  • 能访问各种网站的浏览器百度一下网页搜索
  • 自己做网站花多少钱雅虎搜索
  • 哈尔滨招标信息网网站推广优化排名教程
  • 个人可以建论坛网站吗福清网络营销
  • 济南做网站优化价格百度推广网站一年多少钱
  • 做网上商城网站哪家好杭州seo靠谱
  • 做营销网站制作关键词优化课程
  • 网站移动终端建设口碑营销成功案例
  • 美国做试管婴儿 网站推广普通话宣传语
  • 网站备案信息查询系统软文发布平台媒体
  • 泊头哪给做网站的好制作网页的教程
  • 漳州建设银行网站首页在百度上打广告找谁
  • 网站免费建站k网络营销策划方案书
  • 网站建设类公网店推广的作用
  • 安平做网站除了百度指数还有哪些指数
  • 做网站公司 蓝纤科技知乎怎么申请关键词推广
  • 临沂免费做网站发表文章的平台有哪些
  • 网站推广的方式包括哪些广西网站建设制作
  • 杭州营销网站建设东莞网站建设哪家公司好