java内部类以及指针指向问题

图片说明

图片说明
第一个图是我的SourceType类,是一个普通的成员内部类,一个get单例模式
第二幅图是我的Test类,a= sourceType.getInnerClass()的时候已经实例化,所以a=b是因为单例问题,但是sourceType.new InnerClass().display();的时候又调用一次内部类的构造方法,为什么他的hashcode还是跟a,b相等,不是应该调用构造方法就创造一个新的对象么?不理解为什么

因为你的是单例模式,也就是说在你程序运行中;innerClass只存在一个都指向同一个地址。

我知道了,其实他们是不等的,但是innerClass.hashcode是获得类类型的哈希码,所以会a,b,sourceType.new InnerClass()的类类型是相同的,其实是a=b !=sourceType.new InnerClass() 但是他们的类类型相同了,,,,,结果我又实验了一个新的东西,发现了一个新的问题 图片说明
可以看见我只是把sourceType.new InnerClass().display()调换了一个位置,结果在外部类的中的static InnerClass innerClass 就调不到他的hasocode了,这是为什么,可以看见他也调用了构造方法,但那是却调不到外部类的static InnerClass innerClass成员变量的hashcode,也就是display的方法会直接报空指针的错误,是因为static InnerClass innerClass这时候还没有加载么

将完整的源码发上来看看