2013-09-16 74 views
2

我最近從在PHP中工作轉換爲Java並有查詢。想強調我是Java的初學者。從另一個Java類調用靜態方法

基本上我在文件A(與類A)中工作,並且想要引用保存在文件B(類B)中的靜態方法。在使用A類時,是否需要對文件B進行任何引用? (我正在考慮PHP中的require_once)我在A類中的代碼如下:

Public class A{ 
String[] lists = B.staticMethod(); 
} 

Eclipse沒有將B識別爲類。我是否需要創建一個B的實例才能訪問靜態方法。感覺像我真的俯視一些東西,並會欣賞任何輸入。

+1

這些類是否位於不同的包中?如果是,那麼你需要在'A'類中導入'B'類。 –

+1

靜態方法不需要實例。一切看起來都很好,但'public'關鍵字應該以小寫字母'p'開頭。如果'B'在另一個包中,則需要添加一個導入語句:'import package_of_B.B;' – RaptorDotCpp

回答

11

確保您有正確的訪問B.staticMethod。也許它聲明爲

public static String[] staticMethod() { 
    //code 
} 

此外,您還需要導入B級

import foo.bar.B; // use fully qualified path foo.bar.B 

public class A { 
    String[] lists = B.staticMethod(); 
} 
1

你並不需要創建類的實例調用靜態方法,但是你需要導入班上。

package foo; 

//assuming B is in same package 
import foo.B; 

Public class A{ 
    String[] lists = B.staticMethod(); 
} 
1

Java的類加載機制與PHP的自動加載器類似。這意味着你不需要像includerequire函數那樣的任何東西:只要你使用的類在「類路徑」上就可以找到它們。有人會說你必須用import statement。這不是真的; import什麼都不做,只是給你提供一種用短名稱來引用類的方法,這樣你就不必每次重複包名。

例如,在與ArrayListDate類可以這樣寫工作的程序代碼:

java.util.ArrayList<java.util.Date> list = new java.util.ArrayList<>(); 
list.add(new java.util.Date()); 

重複包名獲得勞累後一段時間,所以我們可以用import告訴編譯器我們想通過它們的短名稱來提及這些類:

import java.util.*; 
.... 
ArrayList<Date> list = new ArrayList<>(); 
list.add(new Date()); 
相關問題