2012-12-06 105 views
8

可能重複:
Java import confusion爲什麼一些Java代碼再次輸入相同的包?

,當我讀到發揮框架文件,我發現這一點。

import play.*; 
import play.mvc.*; 

在第一行本身,他們已經導入了所有打包下的類。那麼第二行的用途是什麼?檢查這link。轉到'提供應用程序錯誤頁面'部分。

糾正我,如果我在進口的概念錯了。

+0

謝謝大家。對我沒有專注於基本的東西感到羞恥。 Eclipse負責這一點。 – Gugan

回答

18

糾正我,如果我錯了進口的概念。

你是。

事情是這樣的:

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.utiljava.util.regex是完全不相關的。

2
import play.*; 

將導入所有類型;除了在子包內的那些。

import play.mvc.*; 

將導入mvc包,這是內play子pckage內的所有類型。

你會發現這個問題的答案也有幫助:Java import confusion

1

第一行將導入所有類,枚舉和接口在同一級別的播放。*但沒有子包。因此你需要第二行。

0

它們是不同的包。 Java中沒有子包的概念。通過play。*導入的類可能正在工作中。*。從JVM的角度來看,它們與play.mvc。*下的類無關。命名約定只是方便您瞭解這些軟件包是相關的,並且play.mvc可能很大程度上取決於玩法。

相關問題