,當我讀到發揮框架文件,我發現這一點。
import play.*;
import play.mvc.*;
在第一行本身,他們已經導入了所有打包下的類。那麼第二行的用途是什麼?檢查這link。轉到'提供應用程序錯誤頁面'部分。
糾正我,如果我在進口的概念錯了。
,當我讀到發揮框架文件,我發現這一點。
import play.*;
import play.mvc.*;
在第一行本身,他們已經導入了所有打包下的類。那麼第二行的用途是什麼?檢查這link。轉到'提供應用程序錯誤頁面'部分。
糾正我,如果我在進口的概念錯了。
糾正我,如果我錯了進口的概念。
你是。
事情是這樣的:
import foo.bar.*;
只從foo.bar
包導入類型。它沒有從「子包」如foo.bar.baz
導入。
這很容易測試:
import java.util.*;
class Test {
public void foo() {
Pattern p = null;
}
}
這不會編譯,但如果添加:
import java.util.regex.*;
那麼它將。
Java並沒有真正將包看作是形成層次結構。 我們做爲人類,但就Java語言而言,包java.util
和java.util.regex
是完全不相關的。
import play.*;
將導入所有類型;除了在子包內的那些。
import play.mvc.*;
將導入mvc
包,這是內play
子pckage內的所有類型。
你會發現這個問題的答案也有幫助:Java import confusion
第一行將導入所有類,枚舉和接口在同一級別的播放。*但沒有子包。因此你需要第二行。
它們是不同的包。 Java中沒有子包的概念。通過play。*導入的類可能正在工作中。*。從JVM的角度來看,它們與play.mvc。*下的類無關。命名約定只是方便您瞭解這些軟件包是相關的,並且play.mvc可能很大程度上取決於玩法。
謝謝大家。對我沒有專注於基本的東西感到羞恥。 Eclipse負責這一點。 – Gugan