【问题标题】:Android: What is this syntax doing? [closed]Android:这个语法在做什么? [关闭]
【发布时间】:2015-02-12 11:58:02
【问题描述】:
new CountDownTimer(30000, 1000) {

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

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

来源:developer.android.com

我知道它正在创建一个 CountDownTimer 类的新对象,用两个参数初始化并最终启动,因为它返回相同的对象。但是在{}之间有两个函数的代码是一种什么样的技巧呢?有没有关于它的语言参考?提前致谢。

【问题讨论】:

  • onTick() 将毫秒转换为秒,onFinish() 显示在此CountDownTimer 完成时要做什么。
  • 它只是在名为 mTextField 的 TextView 中显示(每秒)剩余时间(以秒为单位)。然后显示“完成!”终止时(30 秒后),在同一个 TextView 中。
  • 谢谢你们,但我知道这两个函数会做什么。我对创建对象时传递整个方法块的技术有疑问
  • 你应该添加一个比 > {} 之间有两个函数的代码更好的描述你的疑问

标签: java android syntax


【解决方案1】:

CountDownTimer 类是抽象的:你不能直接实例化它(这是 OOP 的一个重点,每个 OO 语言也是如此)。

您的 sn-p 创建了一个匿名类实例,正如 @Jon Skeet 在 cmets 中所说的那样。这意味着您可以直接实现抽象类和抽象方法,而无需将它们“存储”在经典的 Java 类中。

【讨论】:

  • 好的,谢谢。这非常有用。
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
相关资源
最近更新 更多