将类本身作为构造函数的唯一参数

Ami*_* Z. 2 java

public class Foo{
    private String a;
    private int b;

    public Foo(Foo foo){
        this.a = foo.a;
        this.b = foo.b;
    }
}
Run Code Online (Sandbox Code Playgroud)

嗨,大家好.

我在工作中做了一小部分这段代码.我的同事看到了这个并给了我"你不应该呼吸"的样子,然后出去约30分钟冷静下来.(我是一名新毕业生)

我一直试图找出我所犯的那个可耻的错误......它没有成功.

有人请详细解释为什么这是一个不好的做法(或愚蠢)?

我这样做的原因是该类有很多参数,我不想每次需要初始化这个对象时都要传递3行参数(使用原始参数).

而且,FYI这个对象是(正如我们在工作中所说的)一个事务对象,每当我们需要传递一个实体类(它使用而不是实体类)时,它就会被初始化.

我也有一个默认的构造函数.

谢谢!

小智 5

您的代码没有任何问题.实际上你所做的有一个名字:复制构造函数 这是制作另一个对象副本的非常方便的方法.(假设除了这个构造函数之外你还有其他一些方法来创建它的实例)