2015-04-28 2 views
1

Я просматриваю код Android в учебнике камеры. Я исхожу из набора языков C#/Obj-C/Swift, поэтому Java по-прежнему нова для меня. Я знаком с функциональным программированием, но этот синтаксис, который я вижу, не кажется функциональным по своей природе (или, может быть, я ошибаюсь).Это анонимный объект, возвращаемый здесь?

Это код:

button.setOnClickListener 
     (
       new View.OnClickListener() 
       { 
        @Override 
        public void onClick(View v) 
        { 

        } 
       } 
     ); 

Линия new View.OnClickListener() является то, что я застрял на. OnClickListener - это интерфейс. Итак, мой вопрос таков: - новый объект View.OnClickListener(), создающий анонимный объект с интерфейсом OnClickListener и переопределяющий onClickView?

P.S. Если бы вы могли также дать мне Java-имя того, что этот код «типа», я бы тоже его оценил.

ответ

1

Как вы уже догадались, вызов new View.OnClickListener() {...} создает объект анонимного типа, который реализует View.OnClickListener. Название этого класса будет определяться именем окружающего класса и примет форму SurroundingClass$index. Итак, если это первый анонимный внутренний класс в MyClass, он будет называться MyClass$1.

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