2010-02-16 58 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; 

这是不够的,放到合适的文件夹结构的文件;你必须在文件的顶部提供一个包声明。

相关问题