2013-09-26 35 views
3

我不知道,但這可能是一個java問題,而不是特定於android。在Android SDK中,當我輸入「。」時在一個空行,它讓我看到一個選項菜單:什麼使用「。」沒有Android(或Java)中的對象是什麼意思?

enter image description here

的MyThread的類是在MainActivity類中聲明(延伸活動,並實現了一些其他接口的UI)。通常這個菜單出現在「。」運算符放在一個對象之後,它顯示了在該類中聲明的成員數據和函數,該對象是其中的一個實例。但是,這裏沒有任何對象,但仍然向我展示了這個菜單。爲什麼這樣做?如果我只是選擇一個函數並將它放在這裏,那麼執行哪個對象的函數呢?

此外,將此「。」在位置1顯示我一個錯誤。位置1只是在MainActivity類中。爲什麼它在這裏顯示錯誤,但不在圖片中顯示的位置?

+1

這不就是一個表達式的非法開始嗎? (儘管最初它的行爲如此)。 –

+0

看起來好像我真的從該列表中放置了一個函數或變量,它只是在「。」處顯示錯誤。 。但是,如果它是一個錯誤,爲什麼它首先顯示菜單? – user13267

回答

1

.將出現在Eclipse中自動完成的幫助,當你類(第1位是在類的外部,所以它會給出一個錯誤/警告代替) - 所有你看到的是方法的方法你的類繼承自它的超類,並且可供你使用或覆蓋。您在Java中創建的所有類對象實際上都是Object的子類,並且由於您擴展了線程,因此您可以從中選擇很多不同的方法。

編輯:

.將只在內部類或方法的工作,它似乎 - 如果你試圖在位置1使用Ctrl + Space,它應該彈出一個類似於上下文菜單,你會得到什麼在其他地方有.。還值得一提的是,這實際上是Eclipse的一項功能(通常稱爲自動輔助或內容輔助),即IDE,而不是Java編程語言本身。爲了公平起見,最擅長的IDE也會有類似的功能,因此它是一個容易犯的錯誤:)

你可以在這個定睛一看,下

Window -> Preferences -> JAVA -> Editor -> ContentAssist機率使你的喜好,但我建議不亂搞默認設置,除非你有一些非常具體的事情要改變。

+0

位置1位於MainActivity類中。它不應該顯示Activity中的方法嗎? – user13267

+0

好點,我完全錯過了我們在MainActivity裏面。嗯,我會認爲自動輔助會從MainActivity的導入中提出可用方法的列表,但是顯然不是這樣。我剛剛嘗試將它複製到我自己的項目上,而且我看到了與現在一樣的內容。 –

+0

@Aniket Thakur的回答似乎也給出了一些解釋。你能從中得到任何想法嗎? – user13267

3

在eclipse的默認設置中,點調用內容輔助,將會有方法彈出,可以從父類中覆蓋,這是代碼中的線程,並且從所有類中擴展了對象,還有來自Object的方法類可以被覆蓋,你可以從方法名稱後面的灰色註釋中看到。

+1

所以「。」更多的是一個Eclipse的命令而不是java構造? – user13267

+1

是的,你可以從Window-> Perferences-> Java-> Editor-> Content Assist看到你的鍵綁定,你會看到有一個'。'在自動激活部分。 您可以在常規 - >按鍵中設置快捷方式,搜索內容輔助,爲其設置快捷方式,可以幫助您更快地編碼。 – winterfall

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 content assist help

2

功能稱爲自動完成。大多數IDE的支持。

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

你的問題有點含糊。您剛剛放置了一個點,IDE嘗試自動完成它。但是,如果在eclipse/Intellij IDEA中執行自動完成(Ctrl +空格),通常即使是黑線,也會得到相同的彈出窗口。

通常點意味着訪問一個靜態變量或調用一個方法。所以IDE可能會下降。

+0

我不知道關於CTRL +空間感謝。我不知道「。」像Eclipse的鍵盤快捷鍵一樣,我認爲它顯示的上下文菜單可能意味着一些我沒有理解的java類對象概念 – user13267

1

In java「。」是一個運算符,用於將任何實例,變量,方法等等與任何實例,類或接口類型相關聯。