当前位置: 首页 > 知识库问答 >
问题:

是否可以使用lombok从基类实例构造派生类实例?

狄溪叠
2023-03-14

使用lombok,我感兴趣的是通过基类实例的构造函数将所有字段复制到派生类,这与C copy构造函数的功能非常相似。目前,人们关注的并不是这本书是深的还是浅的。我有一个基类,如下所示,

class Parent {
  .... fields
}

我感兴趣的是自动生成一个派生类构造函数,它接受基类实例,并将所有字段(浅或深)复制到派生类。例如

class Child extends Parent {
   ... derived fields
   Child(Parent p) { // can be implemented as super(p); 
   }
}

我可以根据需要灵活地注释父类和子类,但是我不想手工创建构造函数,它会逐个复制每个字段。示例用法

Parent parent = Parent.of(....);
Child child = new Child(parent);

共有1个答案

彭星津
2023-03-14

看起来复制构造函数的功能还没有实现(github问题)

而且不可能生成调用super的构造函数(此处和github问题中有说明),因为:

要达到父类所需的分辨率,这根本是不可能的。

基于此,我认为目前不可能做到这一点

 类似资料:
  • 我有一个具有单个抽象基类和几个子类的类层次结构。基类有25个字段,每个子类有一个额外的0-8个字段。 生成器模式和继承 对Java Builder类进行子类化 如何在龙目岛调用超级构造函数 然而,他们没有一个谈到有一个“基构建器”,每个子构建器都是它的一个子类。因此,我无法确定使用泛型,函数的第二个参数应该是什么。

  • 主要内容:构造函数的调用顺序,基类构造函数调用规则前面我们说基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数, 类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通的成员函数。 在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数完成,但是大部分基类都有 private 属性的成员变量,它们在派生类中无法

  • 在这个代码片段中,我想弄清楚以下的顺序:1)初始化/安装派生类变量;2)调用基类构造函数 我的理解是,首先安装派生类,然后调用基类构造函数,然后初始化派生类变量y。这个顺序正确吗?

  • 假设我有以下代码 然而,现在我希望能够将一个超类对象传递给子类构造函数。我该怎么做? 基本上,我想这样做。。。 但是如果超类更复杂,我不想在super()调用中添加每个值。相反,我只想传入一个已经存在的对象,并将其用作超类。 我想这么做。。。 但我不确定这是否被允许? 如果我在超类定义中添加一个构造函数,似乎我可以完成上面的工作。但那会是什么样子呢?

  • Lombok项目的类注释,ToString,用于在其注释的类内自动生成一个ToString()方法。 对于这个类: 调用生成的toString()方法将生成以下输出: 注释的可选元素可用于包含或排除特定字段,但我想知道的是... 可能类似于: