2015-08-05 6 views
0

Я не совсем понимаю, как вы можете создать экземпляр BroadcastReceiver, а затем переопределить inline? Я использую для создания класса и «расширения» другого класса, а затем переопределения в подклассе.BroadcastReceiver: создать экземпляр и переопределить встроенный?

гряду из .NET Так вот, вероятно, почему это немного странно, может кто-нибудь помочь мне понять, как я действительно не понимаю, что происходит

здесь является то, что я говорю о

private final BroadcastReceiver dynamicReceiver 
      = new BroadcastReceiver() 
    { 
     @Override 
     public void onReceive(Context context, Intent intent) { 

      // TODO 

     } 
    }; 

Как вы можете видеть выше, оно создается как экземпляр внутри класса и затем переопределяет его методы.

Любая помощь, я действительно не понимаю, что происходит

Благодаря

+0

В чем вопрос? Потому что отрезанные вы показали, это правильно. – Enerccio

+0

Как я уже сказал, я не понимаю, что происходит, как можно создать экземпляр класса inline, а затем переопределить его методы. Обычно это выполняется с использованием классов и расширяется, а затем вы переопределяете в подклассе. – Martin

ответ

2

Java позволяет создавать анонимные классы. Эти классы создаются через

'new' <type> '(' <constructor-args> ')' '{' <class-body> '}' 

выражение. Такой класс фактически скомпилирован в отдельный файл класса с именем 'parent-type' $ 'ord'.class. Этот тип затем создается как нормальный, и экземпляр возвращается в результате выражения.

Эти анонимные классы совместно используют функции с внутренними классами, то есть вы можете обращаться к полям внешнего класса напрямую или через OuterClass.this синтаксис. Однако они также могут получить доступ к конечным переменным в текущей области.

Дополнительная информация: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

+1

Спасибо, теперь я понял. – Martin

Смежные вопросы