[英]Android and Java: use of runnable
我已经读过在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;
}
};
我所知道的:
但我无法连接点。 假设上面的代码在myActivity类中,实例化了什么,这个匿名类是什么?
一点细节都会很棒。
它被称为“匿名类”。 一些关于它的说明:
您没有为其提供名称,因此为您创建了一个名称。 要查看其真实名称,只需将其写入控制台或读取字节码即可。
如果在外部类的范围内创建,则匿名类具有对其字段的引用,就像任何内部类一样。 通常,它与创建它的范围相同。
如果你需要的只是一个简单的实现,这是很常见的事情。 代码越多,您就应该考虑将它放在另一个文件中(对于订单,不是因为您不能)。
Runnable不是唯一常见的接口。 在Android上,您使用OnClickListener,OnTouchListener,...
由于匿名类与声明它的位置具有相同的范围,因此它表示它具有引用。 尽量永远不要将匿名类保留太久(例如,在静态引用中),因为这可能导致内存泄漏。 在Android上,它非常重要,正如此示例所示(讨论drawables,但匿名类也可以引用上下文)。
匿名类的一些缺点是它们没有构造函数,并且它不能实现多个接口。 它的使用范围非常狭窄,但它非常受欢迎,因为它非常易于使用(和阅读)。
谷歌有关使用“匿名内部类”的更多信息。 这篇“Java中的内部课程,神秘内容”博客文章很好地解释了不同类型的内部类。 另请参阅“3.12。匿名类” 。
实例化的是Runnable
的匿名子类。 它被称为匿名,因为类型本身没有名称。 在此子类中,您正在实现Runnable
接口中指定的run()
方法。
getStatus
的类型是Runnable
,但是getStatus
引用的对象实际上是Runnable
一个实现,它没有明确的命名类型。
代码正在创建实现Runnable接口的类的实例。 该类没有名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.