首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这是测试浅拷贝和深拷贝的适当方式吗?

这是测试浅拷贝和深拷贝的适当方式吗?
EN

Stack Overflow用户
提问于 2014-03-29 17:41:53
回答 1查看 122关注 0票数 0

嗨,我正在尝试设计一种方法来测试一个拷贝构造函数是深拷贝还是浅拷贝。我想出了以下几点。它能正常工作吗?浅层复制的输出为

代码语言:javascript
运行
复制
Test1
Test1

浅层输出

代码语言:javascript
运行
复制
Test1

deep的输出。

在我看来,这是有意义的,因为在深拷贝中,没有任何东西被复制到第二个实例中,所以它工作正常。

代码语言:javascript
运行
复制
public class DeepAndShallowCopyConstructor {

public String Stringtest ="";

public DeepAndShallowCopyConstructor(){
}

//Deep
public DeepAndShallowCopyConstructor(DeepAndShallowCopyConstructor other){
DeepAndShallowCopyConstructor test = new DeepAndShallowCopyConstructor();   
this.Stringtest = test.Stringtest;
}

//  //Shallow
//  public Testing(Testing other){  
//      this.Stringtest = other.Stringtest;
//  }

public static void main(String[] args) {
    // TODO Auto-generated method stub
    DeepAndShallowCopyConstructor test1 = new DeepAndShallowCopyConstructor();
    test1.setStringtest("test1");
    System.out.println(test1.getStringtest());

    DeepAndShallowCopyConstructor test2 = new DeepAndShallowCopyConstructor(test1);
    System.out.println(test2.getStringtest());
}

public String getStringtest() {
    return Stringtest;
}

public void setStringtest(String stringtest) {
    Stringtest = stringtest;
}
}
EN

回答 1

Stack Overflow用户

发布于 2014-03-29 17:53:53

我认为你的问题出在这里:

代码语言:javascript
运行
复制
public DeepAndShallowCopyConstructor(DeepAndShallowCopyConstructor other){
DeepAndShallowCopyConstructor test = new DeepAndShallowCopyConstructor();   
this.Stringtest = test.Stringtest;
}

你可能想要

代码语言:javascript
运行
复制
public DeepAndShallowCopyConstructor(DeepAndShallowCopyConstructor other){
    this();
    this.Stringtest = other.Stringtest;
}

(虽然很难猜测您的意图,但原始代码对我来说毫无意义。)

话又说回来,Stringtest应该有小的s,否则就违反了Java命名约定,而且超长的名称会使代码难以阅读(即使对您来说也是如此)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22729407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档