NetBeans IDE - klasy

0

Witajcie

Dzisiaj zacząłem bliższą przygodę z Javą.

Kurs z którego skorzystałem jako pierwszy:
http://javaprogramming.awardspace.com/index.php?pokaz=_kurs&id=1

Program Hello World wyglądał tak:


class First
{

      public static void main(String args[])
      {
            System.out.println("Hello world"); } 

} 

Środowisko z jakiego korzystam to NetBeans w wersji 6.0.1.

Mój problem pojawia się podczas kompilacji. Mój kod wygląda identycznie jednak klasą jest helloworld ponieważ taka pojawiła się podczas wpisania nazwy programu.

Aplikacja co prawda się skompilowała jednak edytor cały czas wywala komunikat "Change package declaration to helloworld". Po jego kliknięciu dodaje kod package helloworld; w pierwszym wierszu . Dlaczego tak się dzieje? Czy jest to wymagane? Czy jest to jakaś norma? Czy jest to błąd? Czy mogę dowolnie nazwać klasę?

0

Klasę możesz nazwać dowolnie. Jest jedno ograniczenie: jeśli klasa jest publiczna

public class <b>First</b>
...

to jej definicja musi być w pliku First.java.
Umieszczanie klas w pakietach nie jest konieczne, jest natomiast zalecane by uniknąć konfliktów nazw (kilku programistów wpadnie na pomysł by nazwać swoją klasę First i wszystkie te klasy wylądują na Twoim komputerze).

0

Netbeans w swoim kreatorze proponuje zawsze umieszczenie kodu nowej klasy (czy czegoś innego jak interfejsu, wyliczenia itp.) w jakimś pakiecie (można jednak wybrać z listy pakiet <default package="package">). W tym celu tworzy w folderze src projektu kolejny katalog i nazywa go właśnie nazwą pakietu (ściślej mówiąc jest odwrotnie - pakiet ma taką nazwę jaką nazwę ma ten katalog). Możesz to sobie zobaczyć przełączając z widoku Project na widok Files. Sam katalog określany przez src nazywany jest w widoku projektu jako "default package". Pliki w tym pakiecie nie maja na swoim początku instrukcji package.
Umieszczanie klas w pakiecie ma tę zaletę, że jeżeli nazwiesz klasę tak samo jak już istniejąca i dostępna klasa, to jest ona identyfikowana przez nazwę pakietu i nigdy się nie pomyli z tą już istniejącą. Dostaje w ten sposób swoją unikalną nazwę, którą zawsze mogą rozpoznać inne klasy - nawet jak jej nazwa pokrywa się ze standardowymi klasami.
Ma za to tę wadę, że jest to klasa, która w pliku JAR lub w katalogu build będzie siedzieć w podkatalogu o nazwie takiej jak pakiet. Będzie to miało taki skutek, że katalogiem roboczym dla programu uruchamianego z takiej klasy będzie "..", czyli katalog powyżej miejsca skąd uruchomi się metoda main() takiej klasy. Powoduje to trochę problemów dla początkujących oczekujących, że katalogiem roboczym jest miejsce skąd uruchamia się program.

0

Ja dodam tylko, że na początek (a i na później też:) polecam środowisko Eclipse, a nie NetBeans. Sam niedawno zaczynałem, i miałem poważny dylemat, którego środowiska używać, i stwierdziłem, że Eclipse sprawia o wiele mnie kłopotów początkującemu z kompilacją i uruchamianiem programów, niż NetBeans.

http://www.eclipse.org/

0

Czyli reasumując nie jest koniecznością umieszczenie tego kodu lecz ma na celu zapobiegania problemów z nazwami klas? A co do edytora to osobiście uważam że lepiej zacząć od tego "trudniejszego" aby w przyszłości unikać takich sytuacji które blokują pracę do momentu znalezienia odpowiedzi.

0

Dobrze podsumowałeś: pakiety nie są konieczne, pozwalają uniknąć konfliktów nazw.
BTW, też polecam Eclipse.

1 użytkowników online, w tym zalogowanych: 0, gości: 1