请考虑以下代码:
test = (Button) findViewById(R.id.testButton);
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do something
}
}
所以我很困惑,因为new View.OnClickListener(){}
声明了一个匿名类但不应该允许将类用作参数?我以为只有对象可以这样做,为什么这个匿名类强调类作为参数?此外,如果该类用作参数,该方法如何被调用?
答案 0 :(得分:0)
实际上,它是作为参数传递的对象,而不是类。 new View.OnClickListener()
是创建对象的语句。
可能误导你的只是你正在定义一个就地方法,但你必须这样做,因为View.OnClickListener
是一个抽象类,并没有提供onClick()
方法的实现。 / p>
答案 1 :(得分:0)
这里匿名类不作为参数,但new是创建一个对象或缓冲区,并提供该缓冲区的引用作为参数。
答案 2 :(得分:0)
当您调用new View.OnClickListener()
时,您创建了一个对象,因此您不使用类作为参数。没关系。您只是不将链接保存到某个变量(由您自己创建),但现在链接已保存到您的按钮对象中,因此它不会丢失,而且不会丢失。摧毁你的倾听者。
方法被调用,因为它总是发生。