未显式继承其他类的私有嵌套类中super关键字指代什么?
class Outer { private class Inner { @Override public int hashCode() { return super.hashCode(); } } }
此处的super指代Inner类的默认父类java.lang.Object。
Java语言规范明确规定:所有没有显式通过extends关键字指定父类的类,默认直接继承Object类,嵌套内部类也遵循该规则。你的Inner类没有声明显式父类,所以它的父类就是Object,super.hashCode()实际调用的是Object提供的原生哈希值计算逻辑,返回的是和当前Inner实例内存地址关联的哈希值。
IntelliJ自动生成重写方法时,如果检测不到父类有自定义的hashCode实现,就会默认生成调用父类对应方法的代码。如果需要基于业务字段计算哈希值,可以在自动生成的弹窗里勾选对应参与计算的成员变量,IDE就会生成自定义的哈希计算逻辑。
内容的提问来源于stack exchange,提问作者mooglin
相关产品推荐
相关产品推荐

