在动态创建实例时,在Java中调用了什么?

Kie*_*eli 4 java language-features anonymous-class

在代码中,

class MyObject {
   public String doThing() {
      return "doh";
   }
}

class MyClass {
   private myObject = null;
   public MyClass() {
       myObject = new MyObject() {
           public String doThing() {
              return "huh?";
           }
       };
   }
Run Code Online (Sandbox Code Playgroud)

当为myObject分配一个新对象时它叫什么?我在技术上试图找出'doThing'是否覆盖了MyObject中的方法,或者它是否重新定义了它,但我不知道要搜索什么来找到答案 - 并且不知道在不知道它是什么的情况下要问什么问题在动态创建对象的新实例并为其提供实现时调用.

for*_*ran 9

您正在创建一个匿名内部类,它是一个子类MyObject,所以是的,您正在重写该doThing方法,如果是您所要求的.

顺便说一下,匿名类就像命名类一样,它们在.class文件中有自己的字节码,它们的名字就像它们的后缀类,后缀是美元符号和数字.

如果你想自己去尝试,你可以使用的方法getClass()的myObject,提取有关它的信息,如姓名,父,实现的接口,通用参数,等等.