gpt4 book ai didi

Java注释处理-如何处理已经处理过的代码?

转载 作者:行者123 更新时间:2023-11-30 07:12:34 25 4
gpt4 key购买 nike

如果我有课

@GenerateInterface
public class _FooImpl {}

我想生成一个界面

public interface Foo {}

基本上包含了_FooImpl的所有方法(即getter和setter)。

如果我有继承权,比如

@GenerateInterface
public class _ParentImpl {}

@GenerateInterface
public class _ChildImpl extends _ParentImpl {}

这也应该导致接口(interface)继承

public interface Parent {}

public interface Child extends Parent {}

我大致知道如何做到这一点。但是如果 _ParentImpl 是库的一部分怎么办?该库还必须包含Parent

在注释处理器中,我该如何处理这个问题?我无法再次生成 Parent 接口(interface),因为这样我就会有两次相同的接口(interface)。我能否以某种方式检测到它已经存在,但将其与已经存在但不属于库的一部分并因此可以被覆盖的文件区分开来?

实际上,我只需要一个由其他任何东西扩展的类/接口(interface)。因此,我可以从 _ParentImpl 中删除 @GenerateInterface 并对 Parent 接口(interface)的继承进行硬编码。但这将是我最后的手段。 编辑:或者我可以设置@Retention(RetentionPolicy.SOURCE),而不是完全删除界面,对吗?

最佳答案

已经编译的类不会再次处理。

我创建了一个完整的测试设置并自己探索了这个问题。事实证明,只有实际需要编译的文件才会通过注释处理运行。这意味着我可以安全地将 _ParentImplParent 包含在库中。 _ParentImpl 可以保留注释,然后可以将 @Retention(RetentionPolicy.CLASS)@Inherited 结合使用来将注释应用到以非常方便的方式子类化。

关于Java注释处理-如何处理已经处理过的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38969455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com