【问题标题】:Can someone explain the makeDeepCopy method. What does the static part mean? [duplicate]有人可以解释 makeDeepCopy 方法。静态部分是什么意思? [复制]
【发布时间】:2019-06-29 21:06:13
【问题描述】:

makeDeepCopy 方法是什么意思? 它也是构造函数吗?以及为什么数据类型与类名相同。 我假设任何与类同名的方法都是构造函数?

public class Name {

    // private instance => visible in Name class only!
    private String firstName;
    private String lastName;

    // constructor
    public Name(String firstName, String lastName) {
        // this keyWord differentiates instance variable from local variable
        // refers to the current object
        this.firstName = firstName;
        this.lastName = lastName;
    }


    public Name(Name name) {
        // Copy constructor
        this.firstName = name.getFirstName();
        this.lastName = name.getLastName();
    }

    public static Name makeDeepCopy(Name name) {
        // copy method
        return new Name(name);
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String toString() {
        return this.firstName + " " + this.lastName;
    }
}

【问题讨论】:

  • 不,它不是构造函数,但它确实调用了构造函数。它创建一个新对象,其信息与传入的对象相同。
  • static 只是意味着您不需要对象的实例来调用该方法 - 如果在这里需要它是有争议的,但是由于您有复制构造函数,所以它是一回事
  • 所以它只是一个普通的方法?你会怎么称呼它?对象方法,因为它接受一个对象
  • 它被称为静态工厂方法,在这种情况下,它可能被使用,因此方法名称可以传达有关其作用的额外信息。参见例如stackoverflow.com/a/929193/2891664

标签: java


【解决方案1】:

它不与类同名,类名是Name,而方法名是makeDeepCopy。您看到的 Name 只是返回类型。

makeDeepCopy 正在摄取一个 Name 对象并创建一个具有相同值的新 Name 对象。它上面的 Name 构造函数(提取 Name 名称)由 makeDeepCopy 调用,并创建一个新的 Name 对象,该对象具有与传递给 makeDeepCopy 的 Name 对象相同的数据。

【讨论】:

    猜你喜欢
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多