2017-02-03 57 views
0

所以我对Java很新,而且我很难绕过这个概念。在Java中回调接口

我得到它的工作通过这样做:

enter image description here

我不明白的是,在我的WorkerClass我有一个构造函数的参数类型的callbackInterface的。

在我的主要活动类中,我通过传递Main Activity的当前实例来制作我的WorkerClass的一个实例。为什么它工作?它不应该给我一个错误,因为WorkerClass的构造函数需要一个不同的参数?

对不起,如果这听起来很愚蠢,但我想明白它为什么起作用,而不是只记得它是这样工作的,所以我将在未来使用它。

+4

请勿发布代码图片。代码是文本。 – khelwood

+0

它需要的参数会有什么不同?我想也许你不了解的概念是Java界面。 – chrylis

+0

阅读关于Java中接口的更多信息:) –

回答

2

您的活动实现了CallBackInterface,因此您不是将主要活动实例传递给构造函数,而是将其传递给CallbackInterface实现的实例。

如果你删除这个实现,你会得到一个错误。

+0

感谢您解决这个问题,“this”关键字让我感到困惑。另一个问题是:如果我在一个类中实现了多个接口,并且我将几个工作类的实例作为这些接口的参数之一,那么java是否知道要传递正确的接口? – CodeGeass

+0

你为什么不先试试自己? :)答案是肯定的,只要你传递给构造函数的对象实现了一个需要的接口。 –

0

它为什么有效?

它的作品,因为不是在想:

WorkerClass需要在构造函数的接口

你可以(必须)认为作为

WorkerClass需要 “东西” 是可以在构造函数中执行回调

MainActivity实现了的callbackInterface所以(实际主活动的实例)保持该合同,并且可以通过如在构造函数的参数。