我的世界复制方块指令clone方块未复制是什么意思啊

梦想之美好,现实之天睿 各位观众朋友们大家好,这里是正能量呆萌实况主兔耳少年梦睿,喜欢我的视频请订阅一下吧投稿:97粉丝:332分享--dynmicweibozoneqqbaidu将视频贴到博客或论坛视频地址复制Flash代码复制Html代码复制微信扫一扫分享收藏0硬币--稍后看马克一下~用手机看转移阵地~用或其他应用扫描二维码手机下视频请使用扫码若未安装客户端,可直接扫此码下载应用未经作者授权 禁止转载
看过该视频的还喜欢miniOFF16:53 提问
Java克隆对象失败,里面的对象属性没有克隆成功
想克隆一个输入流对象
class CloneTest implements Cloneable{
public InputStream inputStream =
public CloneTest(InputStream inputStream){
this.inputStream = inputS
public Object clone() throws CloneNotSupportedException {
CloneTest cloneTest = (CloneTest)super.clone();
return cloneT
public InputStream getInputStream() {
return inputS
public void setInputStream(InputStream inputStream) {
this.inputStream = inputS
调用的代码:
CloneTest ct = new CloneTest(inputStream);
CloneTest ct2 = (CloneTest)ct.clone();
InputStream inputStream2 = ct2.getInputStream();
这里得到的inputStream2和传进去的参数inputStream还是同一个对象,如何克隆呢?
按赞数排序
斗胆来回答, 你的clone方法中只是简单的调用了CloneTest的父类的clone方法,
这里jvm并不会自动复制你的InputStream属性.如果你需要克隆后的对象和克隆
前的对象引用不同的InputStream对象,那么你需要自己编码复制该InputStream
就像下面这样
public Object clone() throws CloneNotSupportedException {
CloneTest cloneTest = (CloneTest) super.clone();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
while ((len = inputStream.read(buffer)) & -1 ) {
baos.write(buffer, 0, len);
baos.flush();
} catch (IOException e) {
e.printStackTrace();
InputStream is = new ByteArrayInputStream(baos.toByteArray());
cloneTest.setInputStream(is);
return cloneT
你还只做了clone,目前对象是一样的,你还需要对ct2用setInputStream进行修改,这样才会两个对象的属性不一样
因为 CloneTest
只创建了一次,只有一个实例,你要克肯定要创建两个实例,只能进行克隆啊!
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐鍗氬?鍒嗙被锛

我要回帖

更多关于 我的世界复制方块指令 的文章

 

随机推荐