3

我不确定,但这可能是一个java问题,并不特定于android。在 Android SDK 中,当我输入“.”时 在空白行,它显示了一个选项菜单:

在此处输入图像描述

MyThread 类在 MainActivity 类中声明(它扩展了 Activity 并为 UI 实现了一些其他接口)。通常,当“.”时显示此菜单。运算符放在一个对象之后,它显示了类中声明的成员数据和函数,该类是该对象的一个​​实例。但是,这里没有对象,但它仍然向我显示此菜单。为什么这样做?如果我只是选择一个函数并将它放在这里,它会执行哪个对象的函数?

另外,放置这个“。” 在位置 1 向我显示了一个错误。位置 1 就在 MainActivity 类中。为什么这里显示错误,而不是在图片所示的位置?

4

5 回答 5

3

在eclipse默认设置中,点调用内容辅助,会有可以从父类覆盖的方法弹出,这是你代码中的线程,并且从所有类扩展对象,有来自对象类的方法可以被覆盖,您可以从方法名称后面的灰色注释中看到。

于 2013-09-26T09:09:16.567 回答
2

功能称为自动完成。大多数IDE都支持这一点。

What does using a “.” without an object in Android (or java) mean?

你的问题有点模棱两可。您刚刚放置了一个点,IDE 尝试自动完成它。但总的来说,即使在黑线中,如果您在 eclipse/Intellij IDEA 中执行自动完成(Ctrl + 空格),您也会得到相同的弹出窗口。

通常点表示访问静态变量或调用方法。所以IDE提供了可能的下拉菜单。

于 2013-09-26T09:15:54.467 回答
1

.您的班级内时,将在 Eclipse 中显示自动完成帮助(位置 1 在您的班级之外,因此它会给出错误/警告) - 您看到的所有方法都是您的班级从其超类继承的方法,并且可供您使用或覆盖。您在 Java 中创建的所有类的对象实际上都是 Object 的子类,并且由于您也扩展了线程,因此您可以从这些方法中获得大量不同的方法可供选择。

编辑:

.似乎只能在内部类或方法中使用 - 如果您尝试在位置 1 使用,Ctrl + Space它应该会显示一个类似于您.在其他地方获得的上下文菜单。还值得一提的是,这实际上是 Eclipse(通常称为自动辅助或内容辅助)、IDE 的一个特性,而不是 Java 编程语言本身。公平地说,大多数优秀的 IDE 都会有类似的功能,所以这是一个容易犯的错误 :)

你可以仔细看看这个,并根据你的偏好

Window -> Preferences -> JAVA -> Editor -> ContentAssist,尽管我建议不要摆弄默认设置,除非您有一些非常具体的事情要更改。

于 2013-09-26T09:10:24.877 回答
1

. 是内容辅助的捷径之一,这就是为什么你会看到一些关于你下一步可能做的建议的原因。当您键入对象变量然后键入点时,它会建议来自该对象的方法或公共字段。当您在新行上键入它时,它会建议准备好在当前类中覆盖的方法...

默认情况下,角色( 也一样:

Completion can be triggered by user request or can be automatically triggered when the "(" or "." character is typed:

public char[] getCompletionProposalAutoActivationCharacters() {
    return new char[] { '.', '(' };
}

来自: Eclipse 内容辅助帮助

于 2013-09-26T09:15:09.870 回答
1

在java中“。” 是一个运算符,用于将任何实例、变量、方法等...与任何实例、类或接口类型相关联。

于 2013-09-26T09:16:42.567 回答