我希望当子类覆盖父类中的方法时,super.method()
在该子方法中调用。
有什么办法在编译时检查吗?
如果没有,发生这种情况时,我将如何抛出运行时异常?
无法直接要求这样做。但是,您可以执行以下操作:
public class MySuperclass {
public final void myExposedInterface() {
//do the things you always want to have happen here
overridableInterface();
}
protected void overridableInterface() {
//superclass implemention does nothing
}
}
public class MySubclass extends MySuperclass {
@Override
protected void overridableInterface() {
System.out.println("Subclass-specific code goes here");
}
}
这提供了一个内部接口点,子类可以使用该接口将自定义行为添加到public
myExposedInterface()
方法,同时确保无论子类做什么都始终执行超类行为。
我有一个实现可比较接口的类A,和一个扩展A的类B。我需要找到一种方法来覆盖类B中的。 我发现了一个类似的问题不能用可比的父子孙继承并试图实施提供的解决方案 A类: B类: 例外情况: 线程“main”java中出现异常。lang.ClassCastException:T4级。A不能转换为T4级。B(T4.A和T4.B在加载器“app”的未命名模块中)
问题内容: 如果我有 如果我比较A的2个实例但没有覆盖equals方法,是否可以获得预期的结果? 问题答案: 如果我比较A的2个实例但没有覆盖equals方法,是否可以获得预期的结果? 这取决于您的期望:) 默认实现将为您提供 引用相等性-换句话说,当您比较两个引用时,仅当它们是对同一对象的引用时才返回true。 通常,您将重写以实现“值相等”,在这种情况下,两个不同的对象通常被认为具有相等的字段
我是一名Java新手,在可比接口中重写compareTo方法时遇到了一些问题。我的代码创建了一个HashMap,将字符串与int关联起来。我希望重写compareTo,以便ArrayList键中的字符串根据其HashMap值排序,而不是按字母顺序排序。然而,在这种实现下,字符串仍然按字母顺序排序。 哦,澄清一下,nameWeight是字符串和整数对的哈希映射。 有什么想法吗?
问题内容: 好的,我从很多地方和来源都听说过,每当我覆盖equals()方法时,我也需要覆盖hashCode()方法。但是请考虑以下代码 这里的输出为true,完全按照我想要的方式为false,我根本不关心重写hashCode()方法。这意味着hashCode()覆盖是一种选择,而不是每个人都说的强制性选择。 我想要第二次确认。 问题答案: 它对您有用,因为您的代码未使用任何需要API的功能(Ha
问题内容: 我有一个大型的检票口组件库,这些检票口组件使用自定义注释或另一个注释进行注释,该注释具有一个参数以允许多个注释。 这是一个示例代码片段: 到目前为止,我使用apt来检查引用的资源是否确实存在。例如 除非在类路径中找到该文件,否则将导致编译失败。这部分效果很好。 现在,我还是DRY的粉丝,我想使用相同的注释在创建对象时将其实际注入到对象中。使用AspectJ,我已经实现了其中的一部分。
问题内容: 在java中为什么需要覆盖equals和hashcode方法?什么时候用到? 问题答案: 让我们尝试通过一个示例来理解它,如果我们不进行覆盖而覆盖并尝试使用。 假设我们有一个类像这样那样的两个对象是相等的,如果他们等于(和生成) 仅覆盖 如果仅覆盖被覆盖,则在你第一次调用时将散列到某个存储桶,而在调用时将散列到其他存储桶(因为它们具有不同的)。因此,尽管它们是相等的,但由于它们没有散列