社区
Java SE
帖子详情
java使用clone方法遇到的问题
vanity_chang
2019-09-08 04:10:41
现在有一个抽象类:子弹类,然后有个子类:普通子弹类。里面实现了父类的方法,没有加新的属性。 有个飞机类有 属性:子弹,默认把普通子弹赋值给它。 方法:发射子弹: 创建属性里的子弹。然后设置些东西,加入到所有的子弹集合,并在前台画出来。 现在问题是如果在发射子弹方法里,向所有子弹集合加入克隆的对象就会出问题,new出来的就不会。 也不是报错,就是不正常。 用克隆的原因是后期创建多个子弹类后,只要改变飞机的属性就行了。
...全文
96
2
打赏
收藏
java使用clone方法遇到的问题
现在有一个抽象类:子弹类,然后有个子类:普通子弹类。里面实现了父类的方法,没有加新的属性。 有个飞机类有 属性:子弹,默认把普通子弹赋值给它。 方法:发射子弹: 创建属性里的子弹。然后设置些东西,加入到所有的子弹集合,并在前台画出来。 现在问题是如果在发射子弹方法里,向所有子弹集合加入克隆的对象就会出问题,new出来的就不会。 也不是报错,就是不正常。 用克隆的原因是后期创建多个子弹类后,只要改变飞机的属性就行了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vanity_chang
2019-09-08
打赏
举报
回复
引用 1 楼 oh_Maxy的回复:
clone相关的代码看看呢?
我已经找到答案了,因为只克隆了对象,但是对象属性还是指向原来的地址
oh_Maxy
2019-09-08
打赏
举报
回复
clone相关的代码看看呢?
java
深入理解浅拷贝和深拷贝
拷贝对象是
java
中经常会
遇到
的
问题
。
java
中存在两种类型,基础类型和引用类型。
java
的赋值都是传值的,对于基础类型来说,会拷贝具体的内容,但是对于引用对象来说,存储的这个值只是指向实际对象的地址,拷贝也只会拷贝引用地址。 因为引用对象的存在,所以经常会出现和预期不一样的情况。 本文将会深入的探讨一下在拷贝对象中会出现的浅拷贝和深拷贝的情况。 拷贝接口
java
中所有的对象都是继承自
java
.lang.Object。Object对象中提供了一个
clone
方法
,来供我们对
java
对象进行拷贝。 protected native Object
clone
() throws
Clone
Not
Java
中的
clone
方法
分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化,构造
方法
返回后,一个对象创建完毕,可以把他的引用(地址)发布到外部,在外部就可以
使用
这个引用操纵这个对象(当然,由于指令的重排序,发布对象可能在构造函数返回之前,详细看。都是分配内存,调用
clone
方法
时,分配的内存和源对象(即调用
clone
方法
的对象)相同,然后再
使用
源对象中对应的各个域,填充新对象的域, 填充完成之后,
clone
方法
返回,一个新的相同的对象被创建,同样可以把这个新对象的引用发布到外部。
java
的
clone
方法
_
Java
clone
方法
详解及简单实例
Java
clone
方法
详解什么是"
clone
"?在实际编程过程中,我们常常要
遇到
这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在
Java
语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需求虽然有很多途径,但实现
clone
()方...
java
中
clone
方法
的理解(深拷贝、浅拷贝)
文章目录前言:知识点一:什么是浅拷贝?知识点二:什么是深拷贝?知识点三、
java
拷贝(
clone
)的前提:知识点四:浅拷贝案例:拷贝类:测试类:总结:下面通过画图示意:知识点五:深拷贝案例:结果为:总结:画图说明:知识点六:总结 前言:
java
中的
clone
一直是一个老生常谈的
问题
,另外关于克隆网上也有很多的写过这方面的
问题
。 我在这里记录一下我
遇到
的
问题
和
使用
clone
的
方法
。 知识点一:什么是浅拷贝? 我们这里说的浅拷贝是指我们拷贝出来的对象内部的引用类型变量和原来对象内部引用类型变量是同一引用(
Java
—
clone
()
方法
Java
中
clone
方法
的
使用
1. 什么是
clone
在实际编程过程中,我们常常要
遇到
这种情况:有一个对象object1,在某一时刻object1中已经包含了一些有效值,此时可能会需要一个和object1完全相同新对象object2,并且此后对object2任何改动都不会影响到object1中的值。也就是说,object1与object2是两个独立的对象,但object2的初始值是由obje...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章