千家信息网

Java创建对象的方法有哪些

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,本篇内容介绍了"Java创建对象的方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 简介J
千家信息网最后更新 2025年01月21日Java创建对象的方法有哪些

本篇内容介绍了"Java创建对象的方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1 简介

Java是面向对象的编程语言,只要使用它,就需要创建对象。Java创建对象有六种方法,实际常用的不会这么多,这里权当是记录一下。

2 六种方法

(1)使用new关键字

Pumpkin p1 = new Pumpkin();

(2)反射之Class类newInstance()

Pumpkin p2 = Pumpkin.class.newInstance();

(3)反射之Constructor类的newInstance()

Pumpkin p3 = Pumpkin.class.getDeclaredConstructor().newInstance();

(4)Object对象的clone方法

Pumpkin p4 = (Pumpkin) p1.clone();

注意Object类的clone方法是protected的,在Override的时候,可以改成public,这样让其它所有类都可以调用。

注意浅拷贝和深拷贝。

在这里小编建了一个前端学习交流扣扣群:132667127,我自己整理的最新的前端资料和高级开发教程,如果有想需要的,可以加群一起学习交流

(5)反序列化

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.bin"));
oos.writeObject(p1);
oos.close();

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.bin"));
Pumpkin p5 = (Pumpkin) ois.readObject();
ois.close();

必须要实现Serializable接口;

需要注意哪些字段可序列化,哪些字段不会被序列化,如何控制;

注意serialVersionUID的作用;

了解Externalizable的不同之处。

(6)使用Unsafe类

Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
Unsafe unsafe = (Unsafe) f.get(null);
Pumpkin p6 = (Pumpkin) unsafe.allocateInstance(Pumpkin.class);

很少用的方法,一般不用了解这个方法。

3 示例代码

示例代码如下:

package com.pkslow.basic;import sun.misc.Unsafe;

import java.io.*;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;

public class CreateObject {

public static class Pumpkin implements Cloneable, Serializable {
public Pumpkin(){
System.out.println("Constructor called");
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}

public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, CloneNotSupportedException, IOException, ClassNotFoundException, NoSuchFieldException {

System.out.println("---start---");
System.out.println("(1) new");
Pumpkin p1 = new Pumpkin();

System.out.println("(2) Class newInstance");
Pumpkin p2 = Pumpkin.class.newInstance();

System.out.println("(3) Constructor newInstance");
Pumpkin p3 = Pumpkin.class.getDeclaredConstructor().newInstance();

System.out.println("(4) clone");
Pumpkin p4 = (Pumpkin) p1.clone();

System.out.println("(5)Serialization");
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.bin"));
oos.writeObject(p1);
oos.close();

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.bin"));
Pumpkin p5 = (Pumpkin) ois.readObject();
ois.close();

System.out.println("(6) Unsafe");
Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
Unsafe unsafe = (Unsafe) f.get(null);
Pumpkin p6 = (Pumpkin) unsafe.allocateInstance(Pumpkin.class);

System.out.println("---end---");
}
}

输出结果如下:

---start---
(1) new
Constructor called
(2) Class newInstance
Constructor called
(3) Constructor newInstance
Constructor called
(4) clone
(5)Serialization
(6) Unsafe
---end---

所以会执行构造函数的有:new关键字、两种反射;

不会执行构造函数的有:clone、序列化、Unsafe类。

"Java创建对象的方法有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

方法 对象 序列 反射 学习 代码 关键 关键字 内容 函数 前端 字段 学习交流 实际 拷贝 更多 知识 示例 交流 输出 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 通信网络安全的攻击 广东智行网络技术有限公司 上海高科技软件开发厂家直销 网络安全法职能划分 串口联网服务器采集数据时断时续 网络安全面临的困难 网络安全的本质是威胁对抗 软件开发项目计划书怎么做 广州金中网络技术 达梦数据库获取uuid的方式 网络安全技术试点示范图 扫码充电软件开发 网鼎杯网络安全大赛比赛题目 乾县网络安全宣传周 计算机网络技术入门软件 关于网络安全隐私调查背景 易联众软件开发加班严重嘛 安卓数据库读取优化 数据库修改id的sql语句 计算机网络技术中专高频考点 河南飞普网络技术有限公司简介 用友网络安全公司 学校网络安全信息科设置 洛阳市网络安全教育平台 扫码充电软件开发 安阳网络技术有限责任公司 服务器 报价单 教师如何注意网络安全 网络安全意识形态工作方案 山东服务器虚拟化建设
0