2015-02-12 5 views
-2
new CountDownTimer(30000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
    } 

    public void onFinish() { 
     mTextField.setText("done!"); 
    } 
}.start(); 

Источник: developer.android.comAndroid: Что делает этот синтаксис?

Я понимаю, что это создает новый объект класса CountDownTimer, инициализирован с двумя параметрами и, наконец, начался, потому что она возвращает тот же объект. Но код с двумя функциями между {}, какая техника? Есть ли какие-либо языковые справки об этом? Заранее спасибо.

+6

См. Http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html –

+0

'onTick()' создает миллисекунды в секундах, а 'onFinish()' показывает, что делать, CountDownTimer' заканчивается. –

+0

Это просто показывает (каждую секунду) оставшееся время (в секундах) в TextView под названием 'mTextField'. Затем он показывает «сделано!». по окончании (через 30 секунд), в том же TextView. –

ответ

1

CountDownTimer класс является абстрактным: вы не можете напрямую инициировать его (это точка ООП, а значит и каждого языка OO).

Ваш фрагмент создает экземпляр анонимного класса, как @Jon Skeet рассказывает в комментариях. Это означает, что вы реализуете абстрактный класс и абстрактные методы напрямую, не «сохраняя их» в классическом классе Java.

+0

Ну, спасибо. Это очень полезно. – user3290180

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