Cur*_*Sid 9 java multithreading android instance anonymous-class
我已经读过在Java接口中无法实例化(在文档中,接口).根据定义,Runnable是一个应该由某个类实现的接口.但是在我的一个Android应用程序的下面一段代码中,我看到一个空构造函数 - Runnable()...(我不确定它是否是构造函数)已被使用,并且已经创建了一个实例 - getStatus.
final Runnable getStatus = new Runnable()
{
public void run()
{
TextView uat = (TextView) findViewById(R.id.useAndThrow);
uat.setText(MyThread.getStatus());
return;
}
};
Run Code Online (Sandbox Code Playgroud)
我所知道的:
但我无法连接点.假设上面的代码在myActivity类中,实例化了什么,这个匿名类是什么?
一点细节都会很棒.
它被称为"匿名类".一些关于它的说明:
您没有为其提供名称,因此为您创建了一个名称.要查看其真实名称,只需将其写入控制台或读取字节码即可.
如果在外部类的范围内创建,则匿名类具有对其字段的引用,就像任何内部类一样.通常,它与创建它的范围相同.
如果你需要的只是一个简单的实现,这是很常见的事情.代码越多,您就应该考虑将它放在另一个文件中(对于订单,而不是因为您不能).
Runnable不是唯一常见的接口.在Android上,您使用OnClickListener,OnTouchListener,...
由于匿名类与声明它的位置具有相同的范围,因此它表示它具有引用.尽量永远不要将匿名类保留太久(例如,在静态引用中),因为这可能导致内存泄漏.在Android上,它非常重要,正如此示例所示(讨论drawables,但匿名类也可以引用上下文).
匿名类的一些缺点是它们没有构造函数,并且它不能实现多个接口.它的使用范围非常狭窄,但它非常受欢迎,因为它非常易于使用(和阅读).