Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    Domanda sulle direttive di import

    C'e' una cosa che non ho ancora capito, ma c'è differenza, o meglio cosa è preferibile fare (e perché) quando si tratta di importare una libreria, importarla tutta o solo quello che serve?
    Io a volte per semplicità e per alleggerire il codice di qualche linea preferisco usare gli import con *., ma non so se cambia qualcosa, per caso le librerie importate vengono caricate in memoria? Io penso di no, ma vorrei conferma. In generale, fare

    import java.sql.*;

    piuttosto che:

    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.ResultSet;
    import java.sql.Statement;

    è considerata malpractice?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    C'e' una cosa che non ho ancora capito, ma c'è differenza, o meglio cosa è preferibile fare (e perché) quando si tratta di importare una libreria, importarla tutta o solo quello che serve?
    Io a volte per semplicità e per alleggerire il codice di qualche linea preferisco usare gli import con *., ma non so se cambia qualcosa, per caso le librerie importate vengono caricate in memoria? Io penso di no, ma vorrei conferma.
    La direttiva di import di per sé non fa assolutamente niente di "attivo", non "carica" o sceglie un bel niente. Serve solo a dire al compilatore "se trovi poi un tipo non qualificato, è questo - oppure puoi cercarlo qui dentro".

    Se fai:
    import java.util.*;

    e da qualche parte fai:
    List unList;

    Il compilatore sa che può vedere se List è in java.util.

    L'import "on demand" (quello con *) però può dare problemi se ci sono conflitti:

    import java.awt.*;
    import java.util.*;

    e poi:
    List unList;

    Il compilatore dà errore: infatti esiste un tipo List sia in java.awt, sia in java.util.


    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    In generale, fare

    import java.sql.*;

    piuttosto che:

    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.ResultSet;
    import java.sql.Statement;

    è considerata malpractice?
    Non è di per sé sbagliato l'uso del * (se non ci sono conflitti, chiaro) ma è comunque meno preferibile. Se hai più import on-demand, chi legge il codice non riesce ad avere una idea chiara di dove arriva un tipo.

    Se scrivi del codice un po' in fretta, magari non da un IDE ma da un normale editor, puoi anche usare *. Se usi un IDE generalmente è in grado di aiutarti in questo, quindi è sicuramente più facile e pratico usare i single type import.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.