2013-02-09 13 views
5

Szukałem kodu kogoś innego i koduję go przy użyciu nazw pakietów.używanie nazwy pakietu do tworzenia obiektów w Javie

String filename = ""; 

java.io.PrintWriter writer; 

writer = new java.io.PrintWriter(new java.io.FileWriter(filename)); 

Czy składnia jest odpowiednikiem, gdyby nie została zakodowana przy użyciu nazwy pakietu? Czy jest jakaś możliwość kodowania go nazwami pakietów, ponieważ pozwala na to Java?

Odpowiedz

8

Musisz użyć nazwy pakietów (lub „w pełni kwalifikowanych nazw” - to odnosi się do nazwy pakietu oraz nazwę klasy razem), jeżeli:

  1. Trzeba użyć dwóch klas o tej samej nazwie w tym samym pliku źródłowym.
  2. Nie użyłeś import zajęć, z których korzystasz z jakiejkolwiek przyczyny. (Zwykle szaleństwo.)
  3. You import Ed klasy, ale nadal używają nazw pakietów mimo to, bo nie wiem.
+1

+1 z podejrzanej przyczyny # 2 :) – fvu

+0

wo klasy o tej samej nazwie w tym samym pliku źródłowym. więc można go tak kodować (nadal wyglądałoby jak szaleństwo). dzięki! – Nicholas

+0

@Nicholas Jest to całkowicie poprawny sposób na pisanie Javy, jest to po prostu - z mojego doświadczenia - bardzo, bardzo rzadko * konieczne *, i mniej czytelne niż użycie 'import's dla każdego z przechodzącą znajomością JDK. Stąd komentarz "szaleństwa". – millimoose

3

Można nie używać nazwy pakietów i kod nadal będzie dokładnie taka sama, to po prostu trzeba importować klasy z pakietu java.io w górnej części programu:

import java.io.PrintWriter; 
import java.io.FileWriter; 

String filename = ""; 
PrintWriter writer; 

writer = new PrintWriter(new FileWriter(filename)); 
+0

+1 za podanie innej składni robi to samo – Nicholas

3

Można wpisz nazwę klasy wraz z jej pakietem, aby uniknąć niejednoznaczności, powiedzmy, że istnieją dwie klasy o nazwie PrintWriter w twoim pisaniu programu java.io.PrintWriter, które je pobierze z java.io.

To naprawdę nie jest niespodzianka, że ​​nawet w "standardowych" klasach istnieje sporo zduplikowanych nazw - np. Data istnieje w java.util i java.sql, Kolejka istnieje w java.util i javax.jms - więc będziesz spotkać ten konstrukt od czasu do czasu.

+0

oh Widzę! To całkiem miłe z Java! – Nicholas

7

Korzystanie fully-qualified names jest semantycznie samo jak wtedy, gdy podane klasy były importowane.

Jednym z możliwych zastosowań FQN jest praca z dwiema klasami o tych samych nazwach, ale w różnych pakietach .

import java.util.Date; 

Date date = new Date(); 
java.sql.Date sqlDate = new java.sql.Date(date); 
+0

+1 Dobry przykład! – Nicholas

Powiązane problemy