Я наткнулся на код, и одна вещь меня озадачила. Вот код
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
}
)
закрывается до того, как функция переопределит - person Yogi   schedule 15.06.2021)
, я говорю о{
.)
предназначен для конструктора. - person Kayaman   schedule 15.06.2021)
? - person Yogi   schedule 15.06.2021register
является подклассомReturn
? - person shmosel   schedule 15.06.2021