2010-02-16 63 views
1

我在「com.example.hello」工作區內創建了一個名爲「Tools」的新類。爲什麼我不能把我的功能放在另一個班級?

Tools.java:

public class Tools { 
    public static String getSource (String theurl) { 
     URL u; 
     InputStream is = null; 
     DataInputStream dis; 
     String s; 
     String ss = ""; 
     try { 
      u = new URL(theurl); 
      is = u.openStream();   // throws an IOException 
      dis = new DataInputStream(new BufferedInputStream(is)); 
      while ((s = dis.readLine()) != null) { 
       ss = ss + s; 
      } 
     } catch (MalformedURLException mue) { 
     } catch (IOException ioe) { 
     } finally { 
      try { 
       is.close(); 
       return ss; 
      } catch (IOException ioe) { 
      } 
     } 
     return ss; 
    }   
} 

從這個確切的命名空間(輸入com.example.hello),書中有一個.java文件......我想使用的getSource。

我試圖import com.example.hello.Tools.*

但由於某些原因,我無法使用的getSource?

我只是想能夠從我在同一文件夾中的其他類調用「getSource」。

+0

「但由於某種原因,我無法使用getSource?」我希望編譯錯誤消息告訴你爲什麼......但你沒有在你的問題中包括這個。 – 2010-02-16 00:57:50

回答

8

你想:

import static com.example.hello.Tools.*; 

使用getSource()而無需編寫Tools.getSource()。當然,如果你想寫Tools.getSource()只需使用標準import

import com.example.hello.Tools; 
+0

但是當那個類中有一個私有類NESTED時,我不能再使用該工具了? – TIMEX 2010-02-16 00:28:57

+0

@alex:你的意思是私人嵌套類不能使用工具或外部類不能因爲有一個私人嵌套類?無論哪種方式,您都可以在兩種情況下使用工具。當您調用靜態方法時,Tools類不會被未經過處理。 – cletus 2010-02-16 00:34:49

+0

是的。我有私人課......在這個原創的大班裏面。在這個私有類中有一個調用getSource()的方法。但它沒有定義或什麼。 – TIMEX 2010-02-16 00:37:15

4
import static com.example.hello.Tools.*; 

這裏是一個指向static import

編輯:您也可以撥打電話Tools.getSource()。由於Tools位於同一個包中,因此不需要導入它。

+1

但是當那個類中有一個私有類NESTED時,我不能再使用這個工具了? – TIMEX 2010-02-16 00:31:26

+2

什麼?您永遠不能在封閉類之外使用私有內部類。這是宣佈它是私人的全部要點! – 2010-02-16 00:56:11

4

您是否需要添加以下內容? (問,因爲我沒有看到它在你的例子。)

package com.example.hello; 

這是不夠的,放到合適的文件夾結構的文件;你必須在文件的頂部提供一個包聲明。

相關問題