为什么cloneable接口里什么都没有?通过代码实例简单讲解

前言

各位在学习代码的时候查看关键词定义的时候有没有发现一种特别的关键词,它的里面不像其他正常关键词里有各种方法和代码。今天我通过cloneable接口实例讲解一下。

解析

我们简单的写一段代码,通过person引用来克隆一个对象,下方为代码前段,方便各位理解。

arduino 复制代码
class Person {
    public String name;    
    public Person(String name) {
        this.name = name;     
    }
  
}

public class Test2 {
    public static void main(String[] args) {
    Person person1 = new Person("zhangsan");
    //通过person这个引用来克隆一个对象
    Person person2 = person1.c;
}

代码写到这就出现了一些问题,大家结合图来观看。

首先是:当我们写到这打算调用clone方法的时候,发现里面没有。

随后:我查看了Person 最终继承的object 里面有clone方法,但是为什么这不显示?

数字2图箭头指出的portectd 表示:这个clone方法只能在子类中访问,而且我们的person 也不同的包中,所以我们不能直接访问,需要通过super跨包访问。

一顿操作之后变成了这样,但是我们发现会报错,原因我也标记在图上了。

再次操作之后。

这次没有报错,我们直接运行,发现会报下图这样的错误

图中红框标记的意思为克隆不支持,这个时候我们就需要实现Cloneable接口来帮助我们克隆。这也是它最大的作用。

结语

看到这大家就应该明白了,Cloneable接口里啥都没有其实就是不需要,它作为一个标记接口,消去开发环境下的报错,类似于一个通行证的作用。

相关推荐
笨蛋不要掉眼泪8 分钟前
Java虚拟机:常用参数
java·开发语言·python
亦暖筑序1 小时前
AgentScope-Java 入门:用 Middleware 审计 Agent 调用
java·ai编程·agentscope
你驴我1 小时前
WhatsApp 消息撤回与编辑的幂等性设计实践
java·服务器·前端·后端·python
tokenKe1 小时前
Buzz:蜂巢意识协作平台|Agent 不是 Bot,而是持有独立密钥对的团队成员|SSP Github Daily
github
青山木2 小时前
Hot 100 ---腐烂的橘子
java·数据结构·后端·算法·leetcode·广度优先
小龙报2 小时前
【优选算法】1. 水果成蓝 2.找到字符串中所有字母的异位词
java·c语言·数据结构·数据库·c++·redis·算法
zdkdchao2 小时前
建立gitee对github仓库的镜像
gitee·github
自强的小白2 小时前
重点!起始时间和结束时间与创建时间和修改时间的区别(localdate与LocaldateTIME区别)以及增删改查什么时候设置目前时间(添加和更新员工时)
java
雪的季节2 小时前
Python 线程同步与异步编程 全解析
java·开发语言
吃饱了得干活3 小时前
缓存与数据库一致性:从理论到实战
java·后端·面试