2012-02-06 108 views
-5

有時我們可以從ClassA的事:Java靜態進口

import com.software.ClassB; 
    classbObject = new ClassB ; 
    ClassB.getMethodX(); 

,我們也可以從ClassA的使直接

import com.software.ClassB; 
classbObject = new ClassB ; 
classbObject.getMethodX(); 

的是這2個病例之間之探源(調用直接在類或目的)?有推薦嗎? 謝謝,

回答

1

你的意思是,爲什麼這樣的:

ClassB.getMethodX() 

距離這有什麼不同?

classbObject.getMethodX() 

如果是這樣,那麼第二個是不知何故錯誤。我的意思是它仍然有效,但它沒有任何意義。該方法被聲明爲靜態的,它「屬於」類。你有一個類的靜態方法,無論多少個實例。所以,每一個靜態方法應該被稱爲以靜態方式: ClassB.getMethodX()

+0

尤金,我已經通過添加classbObject = new ClassB更新我的問題; – lola 2012-02-06 13:16:43

+0

@lola的答案依然如此。看起來像你的getMethodX()方法是靜態的嗎?你想知道如何從Class或Object中調用它?如果是這樣,那麼正如我所說,建議從班級。 – Eugene 2012-02-06 13:19:37

0

無需導入就可以做ClassB classbObject的唯一方法是如果它們在同一個包中。如果您問,如果您使用導入的答案是,如果需要導入,則使用導入,因爲類不在同一個包中。

我在您的問題中看不到靜態導入,因此不確定這與您的問題有何關係。

2

如果你指的是同樣的事情,我的意思是:沒有,沒有,因爲getMethodXClassB.getMethodX()classbObject.getMethodX()之間沒有功能上的差異是靜態的。只有你的編譯器可能會給你一個警告,classbObject.getMethodX()由於來自非靜態上下文的靜態方法調用而不鼓勵。

+0

我認爲應該說,即使沒有區別,也應該勸阻通過實例調用靜態方法。 – 2012-02-06 13:36:14

+0

它也是不鼓勵的,像Eclipse這樣的某些IDE會在這樣做時發出警告。 – belgther 2012-02-06 13:43:02