我正在阅读一本教科书,我想知道我们传递给函数的参数如何既不是原语,也不是用户定义的类实例.
SwingUtilities.invokeLater(new Runnable()
{
public void run() {
new ButtonDemo();
}
});
Run Code Online (Sandbox Code Playgroud)
我了解到这是其中之一.但它似乎在这里传递了一个用户定义的构造函数方法,例如Runnable().看来他们想在以后运行该线程,但什么时候?这是否合法,我认为是,但我从来没有在我的Java类中听说过这样的事情.
我想知道我们传递给函数的参数如何既不是原始的,也不是用户定义的类实例.
它是用户定义的类的实例.唯一的区别是这个类没有名字*.
但它是一个类的真实实例 - 它可以完成命名类可以执行的大多数操作.除此之外,它还可以提供其基类或接口的方法的实现,这是用于将"一段可执行代码"传递给方法的方法.
*至少,不是用户可见的:Java编译器确实为每个匿名类分配一个内部名称,该名称通常包含一个美元符号.