如何在Java中实现类似于Lombok的注释的自己的注释

时间:2019-07-25 08:36:31

标签: java reflection code-generation

是否可以创建自己的注释,如在Lombok lib中那样在编译时可见?

让我们想象一下,该类有100个按钮作为字段和100个相应的click方法。这使得该类相当大。

public class MainPage {

    private Button logo;
    private Button importImage;
    private Button switcher;
    // ... Buttons

    public void clickOnLogo() {
        Clicker.click(logo);
    }

    public void clickOnImportImage() {
        Clicker.click(importImage);
    }

    public void clickOnSwitcher() {
        Clicker.click(switcher);
    }
    // ... Corresponding click methods

}

我想创建一些注释以将其应用于每个字段或类,而不是编写方法。

@Clickable
public class MainPage {

    private Button logo;
    private Button importImage;
    private Button switcher;

}

public class Runner {

    public static void main(String[] args) {
        // Some code initializing the main page.........
        MainPage page = new MainPage();
        page.clickOnLogo();
        page.clickOnImportImage();
        page.clickOnSwitcher();
    }

}

1 个答案:

答案 0 :(得分:0)

我会尝试一个代码生成框架。这样,您就可以在模型中描述您的域(在这种情况下为所有按钮),并从中生成所需的内容。

生成的代码应可读,并位于单独的目录中。您的IDE会像处理其他任何代码一样处理它。如果需要重新生成,只需丢弃旧代码并再次生成即可。

我在许多项目中使用了代码生成器,并在下面发布了自己的代码:

https://github.com/carstenSpraener/cgV19

如果您尝试这样做,反馈会很好。