La cosa principale su cui concentrarsi è la leggibilità. Trovo il secondo più leggibile.
In rari casi, preferisco il secondo approccio. Consideriamo il seguente scenario: Per qualche ragione, ho scritto un corso e lo ho chiamato File
. Ho digitato File file = new File(...)
e il mio IDE ha importato automaticamente lo java.io.File
per me. Ma non voglio quel tipo di oggetto, voglio la classe myFile
. Quindi, invece di importare la classe corretta, preferisco l'importazione in-line, solo che gli altri utenti non verranno confusi con la classe File
di Java.
Per quanto riguarda le prestazioni, sono esattamente lo stesso, ed ecco la prova -
Questo è il bytecode generato per il primo frammento:
public class java8.tests.General {
public java8.tests.General();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #2 // class javax/swing/JFileChooser
3: dup
4: invokespecial #3 // Method javax/swing/JFileChooser."<init>":()V
7: astore_1
8: aload_1
9: new #4 // class java/io/File
12: dup
13: ldc #5 // String .
15: invokespecial #6 // Method java/io/File."<init>":(Ljava/lang/String;)V
18: invokevirtual #7 // Method javax/swing/JFileChooser.setCurrentDirectory:(Ljava/io/File;)V
21: return
}
Questo è il bytecode per la seconda :
public class java8.tests.General {
public java8.tests.General();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #2 // class javax/swing/JFileChooser
3: dup
4: invokespecial #3 // Method javax/swing/JFileChooser."<init>":()V
7: astore_1
8: aload_1
9: new #4 // class java/io/File
12: dup
13: ldc #5 // String .
15: invokespecial #6 // Method java/io/File."<init>":(Ljava/lang/String;)V
18: invokevirtual #7 // Method javax/swing/JFileChooser.setCurrentDirectory:(Ljava/io/File;)V
21: return
}
Non c'è differenza, solo la seconda soluzione è più leggibile. Dovresti usare solo "importazioni in linea" se c'è un conflitto di classi altrimenti. – hotzst
Ti suggerirei di utilizzare il secondo per una migliore leggibilità. E preoccupati delle prestazioni quando hai misurazioni su ciò che si comporta male. – Kuchi