2010-02-16 4 views
1

Я создал новый класс под названием «Инструменты» внутри рабочего пространства «com.example.hello».Почему я не могу поместить свои функции в другой класс?

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?» Я ожидаю, что сообщение об ошибке компиляции сообщит вам, почему ... но вы не включили это в свой вопрос. –

ответ

8

Вы хотите:

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

использовать getSource() без написания Tools.getSource(). Конечно, если вы хотите написать Tools.getSource() просто использовать стандартный import:

import com.example.hello.Tools; 
+0

Но тогда, когда в этом классе есть частный класс NESTED, я больше не могу использовать Инструменты? – TIMEX

+0

@alex: вы имеете в виду, что частный вложенный класс не может использовать Инструменты или внешние классы не может, потому что есть частный вложенный класс? В любом случае вы можете использовать Инструменты в обоих сценариях. Класс Tools не инициализируется при вызове статических методов. – cletus

+0

Да. У меня есть частный класс ... внутри этого оригинального большого класса. И внутри этого частного класса существует метод, который вызывает getSource(). Но это не определено или что-то в этом роде. – TIMEX

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

Вот указатель на static import.

EDIT: Вы также можете позвонить как Tools.getSource(). Поскольку Tools находится в том же пакете, его не нужно импортировать.

+1

Но тогда, когда в этом классе есть закрытый класс NESTED, я больше не могу использовать Инструменты? – TIMEX

+2

Что? Вы никогда не сможете использовать закрытый внутренний класс за пределами своего закрытого класса. В этом весь смысл объявить его частным! –

4

Нужно добавить следующее? (Спрашиваю, потому что я не вижу в вашем примере.)

package com.example.hello; 

Это не достаточно, чтобы поместить файл в соответствующей структуре папок; вы должны предоставить декларацию пакета в верхней части файла.

Смежные вопросы