Java 中以异常方式定义的对象回调

Object callback defined in unusual way in Java

我遇到了一个代码,但有一件事难倒了我。这是代码

static public Return fun1()
{
  return new register(new SomeMap[]{
         null, 
         new SomeMap(new Basic(String.class), new Basic(String.class))
  })
  { 
    @Override
    public Return getSomething(int val)
    {
     ....
    }
  };
}

如您所见,覆盖回调方法的定义超出了 new register(..) 的范围。回调函数似乎是在它自己的代码块之外定义的。这可能吗?这是如何工作的?

) 在函数覆盖之前。

不应该是这样吗?

static public Return fun1()
    {
      return new register(new SomeMap[]{
             null, 
             new SomeMap(new Basic(String.class), new Basic(String.class))
      }
      
        @Override
        public Return getSomething(int val)
        {
         ....
        }
      );
    }




public static class register extends SomeMap
{
   public register(SomeMap[] somemaps)
   {
   }

    public Return getSomething(int val)
    {
     ....
    }
}

public static abstract class SomeMap
{
   // no constructors here just some method definitions here
}

虽然普通的简单匿名 class 看起来只是

new Anonymous() {
    public void method() {
        // implementation
    }
};

该示例采用 SomeMap[] 构造函数参数,但其他方面相同

new register(       // New anonymous class
    new SomeMap[]{  // Provide SomeMap[] for the constructor
         null,      // SomeMap[0] contains null
         new SomeMap(new Basic(String.class), new Basic(String.class)) // SomeMap[1] has data
    }) {            // End constructor 
        // Define the method, in the right place
        @Override
        public Return getSomething(int val) {
        }
    };  // End anonymous class

我不会让那种代码飞起来,即使它的格式正确。