Java基础---Java中创建对象方式

news2024/11/17 23:59:20

目录

使用new关键字

使用反射机制

使用clone方法

使用反序列化

使用方法句柄

使用Unsafe分配内存


  • 使用new关键字

    • 这是最常见的也是最简单的创建对象的方式
    • 通过这种方式还可以调用任意的构造函数(无参的和有参的)
  • 使用反射机制

    • 运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法
    • 1-使用Class类的newInstance方法

      • 可以使用Class类的newInstance方法创建对象
      • 这个newInstance方法调用无参的构造函数创建对象
    • 2-使用Constructor类的newInstance方法

      • 和Class类的newInstance方法很像,java.lang.reflect.Constructor类里也有一个newInstance方法可以创建对象
      • 可以通过这个newInstance方法调用有参数的和私有的构造函数
    • 这两种newInstance方法就是大家所说的反射
    • 事实上Class的newInstance方法内部调用Constructor的newInstance方法
  • 使用clone方法

  • 无论何时调用一个对象的clone方法,jvm就会创建一个新的对象,将前面对象的内容全部拷贝进去
  • 用clone方法创建对象并不会调用任何构造函数
  • 要使用clone方法,需要先实现Cloneable接口并实现其定义的clone方法
  • 如果只实现了Cloneable接口,并没有重写clone方法的话,会默认使用Object类中的clone方法,这是一个native的方法

  • 使用反序列化

  • 当序列化和反序列化一个对象,jvm会给我们创建一个单独的对象
  • 其实反序列化也是基于反射实现的

  • 使用方法句柄

  • 通过使用方法句柄,可以间接地调用构造函数来创建对象

  • 使用了MethodHandles.lookup().findConstructor()方法获取构造函数的方法句柄,然后通过invoke()方法调用构造函数来创建对象
  • 使用Unsafe分配内存

  • 在Java中,可以使用sun.misc.Unsafe类来进行直接的内存操作,包括内存分配和对象实例化
  • 然而需要注意的是,sun.misc.Unsafe类是Java的内部API,它并不属于Java标准库的一部分,也不建议直接在生产环境中使用

  • 这种方式有以下几个缺点:
  • 1-不可移植性:Unsafe类的行为在不同的Java版本和不同的JVM实现中可能会有差异,因此代码在不同的环境下可能会出现不可移植的问题
  • 2-安全性问题:Unsafe类的功能是非常强大和危险的,可以绕过Java的安全机制,可能会导致内存泄漏、非法访问、数据损坏等安全问题
  • 3-不符合面向对象的原则:Java是一门面向对象的语言,鼓励使用构造函数和工厂方法来创建对象,以确保对象的正确初始化和维护对象的不变性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/734206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单个电源模块带电感的直流压降仿真(一)

单个电源模块带电感的直流压降仿真(一) 下面实例分析单个电源模块带电感的直流压降仿真分析,以下图为例 具体操作如下 创建新的workspaceLoad a New/Different layout(把PCB文件加载进来)

【滑动窗口】209. 长度最小的子数组

209. 长度最小的子数组 解题思路 滑动窗口设置前后指针滑动窗口内的元素之和总是大于或者等于s滑动窗口的起始位置: 如果窗口的值大于等于s 窗口向前移动窗口结束位置:for循环的j class Solution {public int minSubArrayLen(int target, int[] nums) {int left 0;// 滑动窗口…

UDS统一诊断服务【七】DTC控制0X85服务

文章目录 前言一、DTC控制服务介绍二、数据格式2.1 请求报文2.2 子功能2.3响应格式 三、举例总结 前言 大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS诊断故障码控制0X85服务介绍,希望能对你有所帮助 一、D…

[LeetCode周赛复盘] 第 353 场周赛20230709

[LeetCode周赛复盘] 第 353 场周赛20230709 一、本周周赛总结6451. 找出最大的可达成数字1. 题目描述2. 思路分析3. 代码实现 6899. 达到末尾下标所需的最大跳跃次数1. 题目描述2. 思路分析3. 代码实现 6912. 构造最长非递减子数组1. 题目描述2. 思路分析3. 代码实现 6919. 使…

人工智能与Chat GPT

一本书全面掌握ChatGPT,既有向ChatGPT提问的技巧, 也有构建自己的ChatGPT模型的方法,涵盖开发背景、关联技术、使用方法、应用形式、实用案例等 人工智能是我们这个时代最热门的话题,人们既希望它能代替我们做一些工作&#xff0c…

Python使用SQLAlchemy

Python使用SQLAlchemy 1 安装SQLAlchemy 备注:本文适用于SQLAlchemy>2.0 # 安装SQLAlchemy pip install SQLAlchemy# 安装pymysql pip install pymysql参考文档(SQLAlchemy>2.0) https://docs.sqlalchemy.org/en/20/创建数据库 # …

什么是敏捷测试?

目录 前言: 敏捷测试的定义 敏捷测试的特点 为什么要敏捷测试 缩短价值交付周期 强调质量属于大家 化繁为简节省成本 敏捷测试VS. 传统测试 传统测试如何迁移到敏捷测试 1. 组织文化的转变 2. 组织架构的调整 3. 人员培训与指导 4. 轻流程 敏捷测试成…

电视访问Samba

文章目录 问题描述方案一:当贝播放器方案二:nPlayer方案三:Kodi 问题描述 本人使用小米 AX9000 路由器 移动硬盘组了个轻 NAS,想通过电视访问 Samba 看视频(也可以电脑开 SMB) 开启 Samba 功能 文件夹开…

SpringMVC第一讲:SpringMVC基础知识

一、MVC设计模式 MVC的全名是Model View Controller,是模型(Model)-视图(view)-控制器(controller)的缩写,是一种设计模式。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件…

SIFT(尺度不变特征变换)

Sift(尺度不变特征变换),全称是Scale Invariant Feature Transform Sift提取图像的局部特征,在尺度空间寻找极值点,并提取出其位置、尺度、方向信息。 Sfit的应用范围包括物体辨别、机器人地图感知与导航、影像拼接、…

OpenCV 入门教程:膨胀和腐蚀操作

OpenCV 入门教程:膨胀和腐蚀操作 导语一、膨胀操作二、腐蚀操作三、示例应用3.1 图像增强3.2 边缘检测 总结 导语 膨胀和腐蚀是图像处理中常用的形态学操作,用于改变图像的形状和结构。在 OpenCV 中,膨胀和腐蚀是基于结构元素的像素操作&…

一零六三、进程调度算法模拟 (C语言实现)

目录 背景 程序实现 实现效果 背景 1、根据算法要求从键盘输入不少于四个进程信息(包括进程名称、进程到达时间、估计运行时间),RR算法输入不少于两种时间片的大小 2、输出进程的调度顺序、完成时间、周转时间、平均周转时间、平均带权周转…

Openlayers实战:点击某点,overlay显示经纬度坐标

在之前的实战中,我们在某个固定的位置显示鼠标位置的经纬度, 今天改变一种形式,即采用overlay的方式,点击某处,获得到经纬度坐标,显示在overlay层上面。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) * @此源代码版权归大剑师兰特…

23款迈巴赫S480升级原厂主动式氛围灯+电动后门+前后手势感应

23款迈巴赫S480升级原厂主动式氛围灯原厂电动后门原厂手势控制 新车刚提,原厂配置升级,全新配件 配件齐全,准备上车 全套主动式氛围灯配件 氛围灯模块 前排驾驶位顶棚的手势感应 手势感应电脑模块 后排顶棚的手势感应 电动后门配件有锁机、电…

基于simulink使用光流法跟踪汽车(附源码)

一、前言 此示例演示如何使用光流估计在视频序列中检测和跟踪汽车。 二、模型 下图显示了使用光流跟踪汽车模型: 三、用光流结果跟踪汽车 该模型使用光流估计技术来估计视频序列的每一帧中的运动矢量。通过阈值化运动矢量,该模型创建包含移动对象斑点…

mysql学习--使用navicat查看数据库密码

数据库通常分为两种:关系型数据库和非关系型数据库,关系型数据库通常会建立很多二维数据表,形成一对一、一对多、多对多等关系;之后利用SQL语句查询我们所需要的数据;非关系型数据库基于Key-Value的对应关系,并且查询的…

机器学习 day24(多类分类模型,Softmax回归算法及其损失函数)

多类分类 多类分类问题仍然是分类问题,所以预测y的可能结果是少量的,而不是无穷多个,且对于多类分类它>2 如上图:左侧为二分类,右侧为多分类,可以通过决策边界来划分区域 Softmax回归算法 …

记录--在高德地图实现卷帘效果

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 介绍 今天介绍一个非常简单的入门级小案例,就是地图的卷帘效果实现,各大地图引擎供应商都有相关示例,很奇怪高德居然没有,我看了下文档发现其实也是可以…

Fastpillars论文解读

本论文是美团在pointpillar算法的基础上的改进。 主要改进点分为一下两个: 1.引入注意力机制对pillar内的特征进行提取,改善直接maxpooling导致的细粒度信息丢失。 2.参考CSPNet和RepVGG构建了一个全新的轻量化backbone。 一、pillar注意力机制特征提…

怎么把MP4转换成GIF?分享几个方法轻松转换!

如何将mp4转换为gif?在分享视频剪辑素材到社交媒体时,许多人会选择将其转换为gif格式。这是因为GIF文件加载速度更快,文件大小更小。此外,将MP4转换为GIF也方便人们在电子邮件和聊天应用程序中发送动态图像。下面,我们…