正确使用Java注释根据导入的外部库类生成类

正确使用Java注释根据导入的外部库类生成类,java,annotations,generated-code,Java,Annotations,Generated Code,考虑到一些我无法影响的导入类 import com.foo.A; import com.foo.B; import com.foo.C; 我想生成一个由A、B和C共享的方法接口,例如 并生成实现该接口的代理类 public class A extends com.foo.A implements Common {} public class B extends com.foo.B implements Common {} public class C extends com.foo.C imp

考虑到一些我无法影响的导入类

import com.foo.A;
import com.foo.B;
import com.foo.C;
我想生成一个由
A
B
C
共享的方法接口,例如

并生成实现该接口的代理类

public class A extends com.foo.A implements Common {}
public class B extends com.foo.B implements Common {}
public class C extends com.foo.C implements Common {}
似乎我应该使用Java注释和JavaPoet来实现这一点,但我不知道带注释的目标应该是什么。也就是说,我想写一些

@GenerateRelatedProxies("Common", com.foo.A, com.foo.B, com.foo.C)
但是,这个注释应该注释什么元素呢?我是否应该使用注释,或者您将如何实现这种代码生成


如果类是相关的,那么为什么库不提供一个接口呢


原因是库是从proto3生成的。我的理解是protobuf不支持继承,因为它希望语言不可知,而有些语言不支持继承(例如Rust)。然而,从概念上讲,我使用的类实际上与Cat、Dog和Bird一样相关,而且由于依赖protobuf生成的类,在Java中到处复制粘贴相同的逻辑变得非常烦人。我认为按照我的意愿组织实现代码对我来说是有效的,尽管我断言猫、狗和鸟实际上是相关的。

我认为你不需要注释。顺便说一句,可能没有什么框架可以通过反射实现这一点。这不是python(幸运的是)。您需要为A、B和C的变体开发一些接口。我认为您不需要注释。顺便说一句,可能没有什么框架可以通过反射实现这一点。这不是python(幸运的是)。您需要为A、B和C的变体开发一些接口。
@GenerateRelatedProxies("Common", com.foo.A, com.foo.B, com.foo.C)