语境:
我有一个抽象类SuperClass
,它有大量子类,每个子类都处理不同的业务对象,但方式相似。
我需要添加一些新功能,这些功能肯定在SuperClass
. 这里明显的方法是SuperClass
为属性添加一个抽象 getter,并让每个子类覆盖它,以便它可以在调用时发送正确的属性。
问题是:由于害怕回归,我不允许更改我正在处理的其他子类的代码。
所以我不能添加抽象方法,因为其他子类将不再编译。
因为只有我现在正在处理的对象需要这个新功能,所以我可以在 中声明一个标准的非抽象方法SuperClass
,然后返回null
那里。然后在我正在处理的子类中覆盖它,瞧。
问题:
如果没有正确阅读我在 Javadoc 中的警告的人曾经尝试从不同的子类调用这个新方法,由于 getter 没有被正确覆盖,它将产生意想不到的结果。与其在 中返回null
(和意想不到的结果)SuperClass
,我认为抛出异常对我的程序员同事来说会更优雅和有用。
我可以定义一个定制的异常,但是是否有一些类似于“标准”异常的东西YouForgotToImplementSomethingException
或PleaseReadTheJavadocException
存在于“标准”异常中?
编辑:
按照答案中的建议抛出一个Error
不是我非常喜欢的东西,但也许在这里模拟编译器的行为可能有意义?对此有什么想法?