为什么方法可以作为Java中的参数添加

时间:2016-01-02 14:53:17

标签: java android methods parameters

我一直在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);
    }

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

3 个答案:

答案 0 :(得分: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);

您可以很好地初始化变量,然后将该变量作为参数传递。这意味着一样。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

import javax.swing.JFrame; public class Run { public static GameAim gui=new GameAim(); public static void main(String[] args){ gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); gui.setTitle("Aim Training"); gui.setSize(1280, 800); gui.setVisible(true); gui.setLocation(100,50); gui.setResizable(false); gui.openFile(); gui.readFile(); gui.closeFile(); } } 不是一种方法,但您创建的new TimerTask()anonymous inner class结尾。所以基本上你没有将方法作为参数传递,而是传递semicolon类的实例。这link解释得很清楚。