我面临一个问题,我有一个avro生成的类a和另一个定义如下的B:
class A {
String code;
}
class B {
String someString;
List<A> codes;
}
以及扩展前面描述的两个生成类的自定义类,如以下所示:
class CustomA extends A {
String type;
}
class CustomB extends B {
List<CustomA> codes;
}
如果我删除列表<>但我确实需要它。对于getters/ssetter,我使用lombok@Data注释。
有人有解决方案吗?
我想同样的问题也会出现在地图<>上,所以我也需要一个解决方案。
谢谢你的回答。
[编辑]因此,我将在下面用这两张截图给出更具体的例子。
这里是我的类声明。正如我之前所说,类A和B(这里是User和ToDoItem(是由avro模式生成的类,所以我不能在其中修改/写入。这里是我的编译错误。
您可以使用泛型。像
class B<T extends A> {
List<T> codes;
}
class CustomB extends B<CustomA> {
...
}
CustomB
的实例可能始终包含对codes
列表中A
实例的引用。如果不触及B
的类定义,就无法对此进行限制。
由于这在您的情况下是不可能的,您必须找到一个变通方法。一种方法是定义一个自定义的、命名不同的getter(不带Lombok(,它只返回codes
中作为CustomB
实例的那些元素。