3

语境:

我有一个抽象类SuperClass,它有大量子类,每个子类都处理不同的业务对象,但方式相似。

我需要添加一些新功能,这些功能肯定在SuperClass. 这里明显的方法是SuperClass为属性添加一个抽象 getter,并让每个子类覆盖它,以便它可以在调用时发送正确的属性。

问题是:由于害怕回归,我不允许更改我正在处理的其他子类的代码

所以我不能添加抽象方法,因为其他子类将不再编译。

因为只有我现在正在处理的对象需要这个新功能,所以我可以在 中声明一个标准的非抽象方法SuperClass,然后返回null那里。然后在我正在处理的子类中覆盖它,瞧。

问题:

如果没有正确阅读我在 Javadoc 中的警告的人曾经尝试从不同的子类调用这个新方法,由于 getter 没有被正确覆盖,它将产生意想不到的结果。与其在 中返回null(和意想不到的结果)SuperClass,我认为抛出异常对我的程序员同事来说会更优雅和有用。

我可以定义一个定制的异常,但是是否有一些类似于“标准”异常的东西YouForgotToImplementSomethingExceptionPleaseReadTheJavadocException存在于“标准”异常中?

编辑:

按照答案中的建议抛出一个Error不是我非常喜欢的东西,但也许在这里模拟编译器的行为可能有意义?对此有什么想法?

4

2 回答 2

8

我已经看到一些库为此使用UnsupportedOperationException 。

抛出以指示不支持请求的操作。

于 2013-03-11T10:27:43.023 回答
-2

确切的事情是java.lang.AbstractMethodError

于 2013-03-11T10:30:17.893 回答