importowanie klas w javie

importowanie klas w javie
LO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Witam mam takie małe pytanko. Jak się prawidłowo powinno importować w Javie i innych językach?

Kopiuj
import javax.swing.*;

czy

Kopiuj
import javax.swing.JLabel;
import javax.swing.JButton;

Jeśli będę w programie używam tylko klasy JButton oraz JLabel.
Wydaje mi się, że to drugie rozwiązanie jest prawidłowe. To pierwsze chyba tylko niepotrzebnie zwiększy objętość programu.

dodanie znaczników <code class="java"> - fp

Gjorni
  • Rejestracja: dni
  • Ostatnio: dni
0

Na logikę niby tak, ale w praktyce jednak wygląda to następująco... Prosta klasa:

Kopiuj
import javax.swing.*;

public class Klasa {

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

Zajmuje 142 bajty przed kompilacją. Zmiana importu na javax.swing.JLabel zwiększy objętość pliku do 147 bajtów, na javax.swing.JButton na 148 bajtów, a wykorzystanie obu importów (JLabel + JButton) skutkuje zwiększeniem objętości pliku Klasa.java do 176 bajtów :) Dlaczego? Ilość znaków w wyrażeniu "import javax.swing.JButton" jest brana pod uwagę, a nie to, co ten pakiet w sobie zawiera itd. A teraz jak wygląda sprawa po kompilacji? Nieważne ile importów wklepiemy z pakietu javax.swing, to skompilowany plik (.class) będzie miał objętość 416 bajtów, dopóki nie utworzymy jakiegoś obiektu z zaimportowanych pakietów. Dlaczego? Bo instrukcja import umożliwia po prostu uwidacznianie konkretnych klas i pakietów, a także jest prawdę mówiąc pomocą jedynie dla programisty, bo nie musi być stosowana jako taka. Z punktu widzenia samego języka nie trzeba jej stosować w żadnym z programów. Jednak, gdy korzysta się wielokrotnie podczas pisania z tych samych klas, to import pozwala zaoszczędzić sporo czasu na skrobaniu. Tak więc z uwagi na oszczędność w czasie stosuj skróty typu "import javax.swing.*;" :)

Pozdrawiam.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Drugie jest lepsze, ale nie z powodu mniejszego programu - wielkość programu jest praktycznie taka sama.

Kopiuj
import java.util.*;
import javax.swing.*;
....
Timer timer = new Timer(...);

Kodu nie skompilujesz bo klasa Timer jest w pakiecie java.util, jest też w pakiecie javax.swing. W kodzie pisanym w notepad++ używam gorszego pierwszego rozwiązania, bo wymaga mniej pisania.

LO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Nie dawno zacząłem używać IntelliJ i tam jak użyję jakiejś klasy z swinga i dam żeby ją dodało to dodaje:

Kopiuj
import javax.swing.*;

A gościu w kursie swinga który oglądam używa Eclipsa i jemu dodaje pojedyncze klasy.

Kopiuj
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JButton;

I wydawało mi się, że taki zapis będzie tworzył po kompilacji mniejszy plik wynikowy. A dwa to chyba jest on bardziej przejrzysty bo widać jakie z czego klasy importowane są.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Dlaczego sądzisz, że drugi zapis da mniejszy plik wynikowy? Instrukcja importu niczego nie wstawia do pliku wynikowego, pozwala jedynie kompilatorowi uzupełnić krótką nazwę klasy do pełnej nazwy. Kody

Kopiuj
import javax.swing.*;
...
JFrame okno = new JFrame();

import javax.swing.JFrame;
...
JFrame okno = new JFrame();

//bez żadnego importu
javax.swing.JFrame() okno = new javax.swing.JFrame();

są równoważne.

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
0

W pliku wynikowy i tak wszystkie użycia są zastępowane przez pełną nazwę klasy. Zatem czy napiszesz:

Kopiuj
import javax.swing.*;

czy

Kopiuj
import javax.swing.JLabel;

nie robi różnicy.

Ważniejszym aspektem jest funkcjonalność na poziomie IDE. Poza wspomnianym wyżej przez @bogdans-a konfliktem nazw przy imporcie z *. może się okazać, że np. podpowiadanie nazw będzie spamowało gigantycznymi listami z całych pakietów.
Osobiście wolę pełne nazwy właśnie z powodu znacznie lepiej działającego auto uzupełnia składni i podpowiadania nazw.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.