如何在龙目岛调用超级构造函数[英] how to Call super constructor in Lombok

问题描述

我有课

@Value
@NonFinal
public class A {
    int x;
    int y;
}

我还有一个 B 班

@Value
public class B extends A {
    int z;
}

lombok 抛出错误,说它找不到 A() 构造函数,显式调用它我想要 lombok 做的是给类 b 提供注释,使其生成以下代码:

public class B extends A {
    int z;
    public B( int x, int y, int z) {
        super( x , y );
        this.z = z;
    }
}

我们在 Lombok 中是否有注释可以做到这一点?

推荐答案

这在龙目岛是不可能的.虽然这将是一个非常好的特性,但它需要解析才能找到超类的构造函数.超类只有在 Lombok 被调用时才知道名称.使用 import 语句和类路径来查找实际的类并非易事.而且在编译过程中,你不能只使用反射来获取构造函数列表.

这并非完全不可能,但在 val 和 @ExtensionMethod 中使用分辨率的结果告诉我们,这很难且容易出错.

披露:我是 Lombok 开发人员.

本文地址:https://www.itbaoku.cn/post/978691.html