实例化对象有哪几种方式

news/2024/11/5 23:29:01/文章来源:https://www.cnblogs.com/89564f/p/18525860


1. **new 关键字**
   User user = new User();
 
2. **clone() 方法**
   User clonedUser = originalUser.clone();

3. **通过反射机制创建**
   Class<?> cls = Class.forName("com.dao.User");
   User u = (User) cls.newInstance();

4. **序列化反序列化**
   序列化是将一个对象转换为字节流的过程,而反序列化则是将字节流还原为对象的过程。这种方式可以在远程通信等场景下使用。
   //将一个对象实例化后,进行序列化,再反序列化,也可以获得一个对象
   // 序列化
   ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D:/data.txt"));
   out.writeObject(user);
   out.close();

   // 反序列化
   ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:/data.txt"));
   User user2 = (User) in.readObject();
   System.out.println("反序列化后的用户:" + user2);
   in.close();

这些方法都可以用来创建或复制对象,但适用的场景不同。例如,`new` 关键字是最常用的方法,而 `clone()` 方法则适用于克隆对象。反射机制可以动态地创建对象,适合在运行时加载类。序列化和反序列化则常用于网络传输或持久化存储。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作字符串都有哪些类以及它们之间有什么区别

1. **String**: - 是不可变对象。每次对 String 类型进行修改时都会生成一个新的对象。 - 适用于不频繁修改字符串的情况。 2. **StringBuilder**: - 线程不安全,效率高,多用于单线程环境。 - 适用于需要频繁修改字符串的操作。 3. **StringBuffer**: - 线程安全…

微信公众号服务器配置一直提示token验证失败?

本地使用postman,请求了要设置在微信公众号服务器回调的URL,可以正常返回echostr,点击提交, 一直报错token验证失败,请问这个是什么原因呢? 解决办法: 解决了,我去,好坑啊,遇到该问题的朋友,请做如下检查:1.检查,request 是不是 UTF-8,避免获取的数据是乱码 2…

「闲话」NOIP 集训

10.31 因为明天是 11.1,所以从今天开始写 上午 T1 没看让输出啥所以一眼会了求所有 j 看了输出之后,额 诶,其实也对啊,直接根据每个 j 求出的 i 区间查分一下就好了,调和级数的复杂度 20 min 打完了,本来以为有些 conercase 要调一会,但直接过了所有样例,爽!! 后记:…

2024-11-04 Request textDocument/documentSymbol failed. ==》重启vscode

今个儿早上一来,跑一下项目,我勒个去,这个vscode就给我不断弹出这种弹窗 Request textDocument/documentSymbol failed. 请求文本Document/documentSymbol失败。来源:Vue-官方。 原因:不知道,可能是终端报错了,但是把终端关掉了(没有杀死),报错仍旧存在。 解决方案:…

django抛出异常然后在axios里处理

1.views.py代码@csrf_exempt def get_selectdata_by_sql(request):current = request.GET.get("current", 1)size = request.GET.get("size", 0)limit_size=50try:res_list = []request_dict = json.loads(request.body)# print(request_dict)runsql = req…

Tmux基本用法

Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具。 它的核心功能是解绑当前运行会话进程和当前终端窗口。即使出现意外情况,当前的终端窗口被kill掉了(断电、断网、手贱点错了等等),你之前使用Tmux执行的会话进程仍在继续运行,并可以绑定到…

配置数据同步环境v1

配置数据同步环境v1.0 1 配置Canal+MQ数据同步环境 1.1 配置Mysql主从同步 根据Canal的工作原理,首先需要开启MySQL主从同步。 1.在MySQL中需要创建一个用户,并授权 进入mysql容器: docker exec -it mysql /bin/bash -- 使用命令登录: mysql -u root -p -- 创建用户 用户名…

linux的Miniconda安装

下载 官网下载安装包:官网 安装 终端输入以下命令安装 sh Miniconda3-latest-Linux-x86_64.sh出现如下页面,摁住回车出现如下页面,松开回车,输入 yes继续回车输入 yes安装完成!重启终端生效,或者执行下面命令立即生效: source ~/.bashrc

C# 删除Word文档中的段落

在编辑Word文档时,我们有时需要调整段落的布局、删除不必要的段落以优化文档的结构和阅读体验。本文将通过以下3个简单示例演示如何使用免费.NET库删除Word文档中的段落 。C# 删除Word中的指定段落 C# 删除Word中的所有段落 C# 删除Word中的空白段落免费.NET Word 库 - Free S…

我的技术成长之路

大家好,我是苏三~ 前言 我花了一年多的时间,把我这些年的技术成长路线,都沉淀到了我的知识星球:【Java突击队】 ,欢迎大家加入一起探讨和学习。 星球里面沉淀的干货越来越多,包含了:学习路线、系统设计、技术选型、踩坑分享、项目实战、源码解读、底层原理、高频面试题,…

华为云开源时序数据库openGemini:使用列存引擎解决时序高基数问题

openGemini 通过引入新的数据排序与索引方式,开发了全新列存引擎,以解决海量时间线场景对于现有时序数据管理方案带来的问题。本文来源:《华为云DTSE》第五期开源专刊,作者:向宇,华为云数据库高级研发工程师、黄飞腾,博士,openGemini存储引擎架构师 在时序数据场景中,…