我有一些课程,里面X
有这个领域A
。它是一个最终字段,在构造函数中初始化。现在我有一个派生类Y
,其中该字段必须始终是 的一个实例B
,一个派生自 的类A
。问题是,该类Y
需要调用一些特定方法,这些方法仅在 B 类上可用,但在其祖先上不可用A
。
我看到了几个解决方案:
- 重用类型的字段
A
,继承自X
,并在类内部Y
强制A
转换为B
。这使我的代码充满了讨厌的类型转换。 - 添加另一个类型的字段
B
。现在没有类型转换,但我们有两个类型略有不同的字段,它们必须始终保持相同的值——也感觉不好。 - 将所有
B
提供的方法添加到A
throwNotImplementedException
。这增加了一些奇怪的方法,这些方法在该类中故意没有意义。
处理这个领域的最正确方法是什么?或者也许还有其他更好的存在?我不认为这是非常特定于语言的,但在我使用的 Java 中必须是可行的。