Java创建对象的四种方式

实战指南 | Adjust 与 Facebook、Google Ads 自归因配置全流程解析 本文详细解析了Adjust与Facebook、Google Ads自归因配置的全流程,帮助移动应用出海推广者解决广告归因难题。通过自归因功能(SAN),开发者可以获取更准确的数据、简化配置流程并扩大安装来源覆盖,显著提升广告效果监测和ROI计算效率。 阅读详情

四种方式:

  1. new创建对象
  2. 反射机制创建对象
  3. 克隆创建对象
  4. 反序列化创建对象

直接上实操代码:

Preson实体类

package com.bean;

import java.io.Serializable;

public class Person implements Cloneable, Serializable {
    String name;
    Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    public Person(){

    }

    @Override
    public Person clone() throws CloneNotSupportedException {
        return (Person) super.clone();
    }

    @Override
    public String toString() {
        return "{name:"+this.name+",age:"+this.age+"}";
    }
}

测试代码:

package com.company;

import com.bean.*;
import com.sun.javafx.util.Utils;
import com.sun.xml.internal.messaging.saaj.util.ByteInputStream;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Constructor;


public class Main {

    public static void main(String[] args) throws Exception {

        //new创建对象
        Person person = new Person("张三", 15);
        //反射机制创建对象
        Constructor<?>[] constructors = Person.class.getDeclaredConstructors();
        Constructor<?> haveArgsConstructor = constructors[1];
        Object reflectPerson = haveArgsConstructor.newInstance("张三", 15);
        System.out.println(reflectPerson);
        System.out.println(person == reflectPerson);
        //clone创建对象
        Person copyPerson = person.clone();
        System.out.println(copyPerson);
        System.out.println(person == copyPerson);
        //序列化创建对象
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(bos);
        oos.writeObject(person);
        ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
        ObjectInputStream ois = new ObjectInputStream(bis);
        Object serializedPerson = ois.readObject();
        System.out.println(serializedPerson);
        System.out.println(person == serializedPerson);
    }
}

运行结果:

{name:张三,age:19}
false
{name:张三,age:15}
false
{name:张三,age:15}
false

总结:

创建对象不一定需要调用构造函数,clone创建和反序列化创建就没有用到构造函数。

STM32驱动2.8寸TFTLCD屏幕实战:从看懂原理图到点亮第一个像素(基于ILI9341) 本文详细介绍了如何使用STM32驱动2.8寸TFTLCD屏幕(基于ILI9341驱动芯片),从硬件连接到软件配置,包括FSMC接口设置、ILI9341初始化序列、坐标设置及基础绘图函数实现。文章还提供了常见问题排查指南和性能优化技巧,帮助开发者快速解决屏幕不亮等问题,并提升显示性能。 阅读详情

相关推荐

CPG控制网络入门

从线性变换开始推导

妖米的博客 5043

Java中创建对象的四种方式

Person zhangsan = new Person(101, "张三", 18, "男");Person lisi = new Person(102, "李四", 18, "男");User user = new User(101,"张三",18,"男");user1 User{id=101, name=‘张三’, age=18, sex=‘男’}user User{id=101, name=‘张三’, age=18, sex=‘男’}

Java后端技术栈 3235

AD9361 Fast Lock实战:Python脚本自动生成Profile寄存器配置(附完整代码)

本文详细介绍了利用Python脚本实现AD9361 Fast Lock Profile寄存器自动化配置的实战方案。通过解析频率合成公式、VCO约束及查表机制,脚本能根据目标频率一键生成完整的16进制寄存器序列,大幅提升射频系统开发中多频点切换的效率和准确性,并支持CSV、JSON、C头文件等多种输出格式,便于与FPGA/嵌入式系统集成。

weixin_29194693的博客 475

java创建对象的四种方式

方法会创建一个新的对象,将原始对象的字段值复制到新对象中。需要注意的是,进行对象克隆时,应该考虑深拷贝和浅拷贝的问题。接口,我们可以将对象写入到字节流中,并从字节流中重新创建对象。反射机制允许我们在运行时获取类的信息并操作类的属性、方法等。这种方式可以创建没有直接可访问构造方法的对象,并且可以动态地根据类名创建对象。序列化是将对象转换为字节流的过程,而反序列化则是将字节流转换回对象的过程。这是最常见和基本的对象创建方式,通过调用类的构造方法来实例化对象。对象,并使用该对象的。方法创建对象的副本。

Hungry99的博客 1493

opencv基础57-模板匹配cv2.matchTemplate()->(目标检测、图像识别、特征提取)

OpenCV 提供了模板匹配(Template Matching)的功能,它允许你在图像中寻找特定模板(小图像)在目标图像中的匹配位置。模板匹配在计算机视觉中用于目标检测、图像识别、特征提取等领域。: 首先,加载目标图像和要匹配的模板图像。: 选择适当的匹配方法,例如 cv2.TM_CCOEFF、cv2.TM_CCOEFF_NORMED、cv2.TM_CCORR、cv2.TM_CCORR_NORMED、cv2.TM_SQDIFF 或 cv2.TM_SQDIFF_NORMED。每种方法对应不同的匹配计算方式。

小海聊智造 1万+

ArcGIS+PLUS+InVEST三件套实战:从零搞定土地利用变化与碳储量预测(附完整数据包)

本文详细介绍了如何整合ArcGIS、PLUS模型和InVEST模型,构建土地利用变化与碳储量预测的完整研究流水线。通过多情景模拟和生态系统服务评估,提供从数据准备到结果验证的实战指南,助力研究者高效完成生态评估项目。

weixin_30399821的博客 543

【java】Java中创建对象有哪些方式?

本文介绍了Java中六种常见的创建对象的方式,分别是使用new关键字、Class的newInstance()方法、Constructor的newInstance()方法、clone()方法、反序列化、工厂模式等。在实际开发中,可以根据具体的业务场景选择不同的创建方式。

DreamSun的博客 5556

C#与西门子PLC S7-1500 S7协议PLC读写数据

/获取对应长度的字符串。//将val字符串转换为字符数组。//String写入。//String读取。//PLC类型 IP地址 机架号 槽号。1.类库使用S7netplus。

softshow1026的博客 5576

五种创建Java对象的方法,你知道几种呢?

这个小伙伴自然就非常迅速地说出了new的方式,结果面试官又继续追问还有哪些别的方式,他就支支吾吾半天不知道了。但是大家要注意,使用该方法的前提是,我们必须先让类实现Cloneable接口,并重写Object的clone方法(因为Object中的这个方法是protected的,若不重写,外部也调用不了)。以上就是波哥为小伙伴们介绍的五种创建对象的方法,现在你知道都有哪些创建Java对象的方式了吗?由此我们就可以知道,这个User对象就是从之前的userFile.txt文件中获取到的。

Python专栏 5022

ImportError: DLL load failed while importing _pydantic_core: 找不到指定的程序对应解决方案

本文主要介绍了ImportError: DLL load failed while importing _pydantic_core: 找不到指定的程序对应解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 19万+

Q3D提取PCB走线RLCG参数

介绍一种提取PCB走线寄生电容和寄生电感的方法

sinat_15150363的博客 2912

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

Java反射之创建对象的四中方式,反射的优点和缺点。

shijinjins的博客 1万+

柔性电极材料新突破:清华团队实现0.1mV级脑信号采集精度

清华团队的 0.1mV 级柔性电极突破,不仅是材料科学与神经工程的跨界胜利,更标志着脑机接口从 “信号采集” 向 “神经交互” 的范式转变。当电极与脑组织实现 “柔性共生”,人类首次拥有了窥探大脑微观电活动的 “精密探头”,这既是神经疾病诊疗的里程碑,更是人机融合时代的新起点。随着技术标准化与产业生态的完善,这场始于实验室的 “柔性革命”,正加速向临床病房、智能工厂、消费电子等场景渗透,为脑机接口的大规模应用铺设 “柔性跑道”。:当柔性电极实现 “神经信号的无损捕捉”,如何平衡技术创新与伦理边界?

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2943

Java 创建对象的四种方式

Java 创建对象一共有四种方式: 1. 运用new关键字来创建对象,这种方式最常见。用的最广。 2. 运用反射手段,调用java.lang.Class 或者 java.lang.reflect.Constructor 类的newInstance()实例方法 3. 调用对象的clone()方法 4. 运用序列化手段,调用java.io.ObjectInputStream 对象的 readO

u010571844的专栏 889

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java创建对象的四种方式,你创建对象不会只会用new吧?

Java对象有哪些创建的方式? 对象除了new创建以外还有什么方式吗?有人知道反射也能创建对象,这里我分为四种方式 new 关键字创建 Class 反射方式创建 已有对象创建 序列化创建 我先创建一个类,方便说明下面的代码 public class Student implements Serializable,Cloneable{ public Student(){ super(); } @Override protected Stu

程序员小章的博客 5722

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java创建对象四种方式

版权声明 本文原创作者:元芳,你怎么看 作者的博客地址:https://blog.youkuaiyun.com/ewcc_ycl 今天突然被问到对象的创建有几种方式,当时立马说道三种,结果答案有四种。。。 接下来一起了解一下它吧。 Java创建对象四种方式 new的方式,也是最常用的方式 利用反射,使用Java.lang.Class或者java.lang.reflect.Constructor类的ne...

ewcc_ycl的博客 275

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java 中创建对象的四种方式

调用new语句创建对象,也是最常见的一种 运用反射手段创建对象 调用对象的clone()方法 运用序列化手段 一、使用new 关键字创建对象 使用new 关键字是最简单最常见的方法,通过这种方式可以条用任意构造函数。 Object obj = new Object(); //使用new 关键字创建对象、初始化对象数据 二、使用反射机制创建对象 反射手段创建对象主要包括两种方式,调用Jav...

weixin_44138647的博客 254

java创建对象的几种方式_Java四种创建对象的方式

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

weixin_39564617的博客 64
上一篇: 剑指offer J27 重建二叉树
下一篇: 浅拷贝与深拷贝——java对象的拷贝
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值