给出一些我不能影响的导入类,
import com.foo.A;
import com.foo.B;
import com.foo.C;
我想生成A
,B
和C
(例如
public interface Common {
Uuid getId();
Long getVersion();
DateTime getCreated();
DateTime getModified();
}
并生成实现此接口的代理类;
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中到处复制粘贴相同的逻辑变得非常烦人。我认为按我的意愿组织实现代码是有效的,因为我断言Cat,Dog和Bird实际上是相关的。