【发布时间】:2017-04-28 21:09:15
【问题描述】:
在我的 Java 项目中,我有 addType1AndType2() 方法,它有窗口,您可以在其中展开列表并从列表中选择对象。创建非常复杂且耗时,因为必须滚动并且 xpath 不断变化。其中有两个列表是实际名称,但由于公司专有信息,我将它们称为Tyep1 和Type2。
现在我有一个UpdateType1 类,它使用AddType1AndType2 中的所有复杂方法,但与Type2 没有任何关系。我可以复制AddType1AndType2 并剪切我不需要的所有内容,但这将是复制,并且必须在两个类中复制更改。这违背了继承和可重用的目的。
我可以制作一个class UpdateType1 extends AddType1AndType2{},我已经完成了。但是仍然有像selectType2Value()这样的方法被继承但在子类中是不可能的。
如果我执行@Override 并在子类中将该类声明为私有,我会收到一个错误,即我无法降低子类中的可见性。
知道我能做什么吗?现在我只是放了一个throw new AssertError("Do not use"),但这似乎有点蹩脚。有没有更好的办法,甚至会在运行时给出编译时错误而不是断言,或者这是最好的方法?
【问题讨论】:
-
我也不认为抛出异常是最好的解决方案。也就是说,考虑使用
java.lang.UnsupportedOperationException。它同样蹩脚,但与现有环境更加融合。 -
关于命名的旁注:方法名称在 java 中采用 camelCase。
标签: java inheritance visibility