【问题标题】:How come methods can be added as parameters in JavaJava中如何将方法添加为参数
【发布时间】:2016-01-02 14:53:17
【问题描述】:

我在 Java 编程中一直忽略这一点,但现在我真的很想知道为什么。 这里有一个示例方法:

public void time()
    {
        final Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            int i =  t;
            public void run() {
                System.out.println(i--);
                if (i< 0)
                {
                    startActivity(intent);
                    timer.cancel();
                }
            }
        }, 0, 1000);
    }

我不明白这怎么可能,谢谢。

【问题讨论】:

  • 具体来说,您觉得那里有什么问题?
  • 你有什么不明白的???
  • 搜索Anonymous Inner Class,您会发现更多关于它的内容,这让您感到困惑。

标签: java android methods parameters


【解决方案1】:

如果你指的是new TimerTask(),它不是一个方法。单词new 表示正在使用其构造函数创建类TimerTask 的新实例。因此,参数是使用其构造函数创建的 TimerTask 类的实例。这不是一种方法。

下面的整个事情只是创建了一个 TimerTask 的实例:

new TimerTask() {
            int i =  t;
            public void run() {
                System.out.println(i--);
                if (i< 0)
                {
                    startActivity(intent);
                    timer.cancel();
                }
            }
        }, 0, 1000);

您可以很好地初始化一个变量,然后将该变量作为参数传递。意思是一样的。

【讨论】:

  • 谢谢,我现在明白了。也感谢其他人。 :)
【解决方案2】:

在您给出的示例中,没有将方法用作参数。但是,有一个匿名类 (TimerTask) 正在使用自定义实现进行实例化。

【讨论】:

    【解决方案3】:

    new TimerTask() 不是一种方法,但您正在创建一个以semicolon 结尾的anonymous inner class。所以基本上你不是将方法作为参数传递,而是TimerTask 类的实例。这个link解释的很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-25
      • 2020-04-12
      • 1970-01-01
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      相关资源
      最近更新 更多