我正在閱讀有關預定義的方法並正在瞭解導入語句。我已經看到並經常使用這些方法來使用某些預定義的方法,但我總是將它們放在程序的開頭。我的問題是,這些可以放在一個特定的代碼塊中,以便它只能在該塊中看到嗎?我不確定會有真正的原因,主要是好奇。Java導入語句
Java導入語句
回答
不,您需要在package
聲明之後的class
/interface
之前定義它。
因此,導入對於整個.class
文件總是可見的。沒有指定類的全名(例如,您需要導入java.util.List
,或者您需要在任何地方都使用它的全名),您可以使用除本地包以外的其他包的成員,而不指定類的全名。
Oracle有一個tutorial on using package members。
在.class
-file順序是defined爲:
package
規範(可選)import
語句class
/interface
/enum
定義
值得注意的是''java.lang。*'會自動導入 –
@ cricket_007 true,我將它改爲'java.util.List' :) –
[JLS specification here](https://docs.oracle.com/ javase/specs/jls/se7/html/jls-7.html#jls-7.3) –
java文件包含三個零件:
- 包定義
- 進口定義(可選)
- 的類(或接口/枚舉)定義。
,它也必須是這個順序,你會得到編譯錯誤,如果它不是順序
我的猜測是,會給你一個編譯器錯誤。但是,如果您在實例化類時指定了類的完整軟件包名稱,則可以有效地實現相同的功能。
如:
public String getString() {
return new com.package.some.Class("hello world").toString();
}
在這種情況下,你不需要在類的頂部有一個「進口」指令,因爲你是在告訴你想要的類所在的方法中,編譯器在com.package.some包中,該類稱爲Class。
這實際上發生在野外,例如,您必須在具有相同名稱的不同包中使用類。您只能導入其中一個,另一個則必須在代碼內部內聯包定義。
import com.package.some.Class;
public class Yolo {
private Class classA;
private com.package.other.Class classB;
public Yolo(Class classA, com.package.other.Class classB) {
this.classA = classA;
this.classB = classB;
}
}
您不能只導入'Class'對象並將它們引用爲Class,因爲編譯器不會知道哪一個。所以,這是一種有效的情況,你會發現這種事情真的發生了。
對於Oracle文檔:
導入封裝部件
要導入的特定成員到當前文件,在任何類型定義,但 後放一個進口 聲明在文件的開頭包聲明,如果有的話。以下是如何從 上一節中創建的圖形包中導入Rectangle類的方法。
- 1. Python導入語句
- 2. JDatePicker導入語句
- 3. 導入Jar語句
- 4. Django導入語句
- 5. python導入語句語義
- 6. Java導入語句:什麼是導入網絡。
- 7. Java:導入與另一個導入語句衝突
- 8. Java導入一句
- 9. 導入語句的位置
- 10. 使用導入語句
- 11. Vim&Java:自動添加java導入語句
- 12. Java和MySQL插入語句
- 13. 插入IF語句 - Java的
- 14. 語法錯誤插入語句java
- 15. CodeModel:手動插入導入語句
- 16. 使用CURRENT_TIMESTAMP導致INSERT語句插入語句
- 17. import into Spark - 如何使用java import語句導入多個類?
- 18. Java Jersey新手問:導入語句錯誤?
- 19. 在Java源代碼中查找未使用的導入語句
- 20. Java中冗餘導入語句的影響是什麼?
- 21. 爲什麼在Java導入語句中使用*很不好?
- 22. Python類定義 - 導入語句
- 23. python pth文件導入語句無效?
- 24. 澄清 - 在Eclipse中導入語句
- 25. 如何導入語句Android Studio中
- 26. XCode導入語句和子目錄
- 27. python中導入語句的列表
- 28. mysql導入語句切斷整數
- 29. 導入語句字節代碼含義
- 30. 在Ubuntu 12.04上的Jsch導入語句
@PritamBanerjee他指的是Java,指向'Scala'的鏈接。 –
對,我的壞。複製了錯誤的一個。 –
其他人已經發布了正確的答案,但關於你的陳述「我不確定實際上是否有這樣做的理由......」,實際上有很好的理由去做這些事情,斯卡拉允許它。一個原因的一個例子是限制導入的範圍,以便它僅在特定塊中可用。 –