Ho visto alcuni codice come:Java out.println() come è possibile?
out.println("print something");
ho cercato import java.lang.System;
ma non funziona. Come si usa out.println()
?
Ho visto alcuni codice come:Java out.println() come è possibile?
out.println("print something");
ho cercato import java.lang.System;
ma non funziona. Come si usa out.println()
?
importazioni statiche fare il trucco:
import static java.lang.System.out;
oppure importare ogni metodo statico e campo utilizzando
import static java.lang.System.*;
Addendum per @Steve C: si noti che @sfussenegger ha detto questo in un commento sulla mia risposta.
"L'utilizzo di un'importazione statica di System.out non è più adatto a un semplice codice di esecuzione."
Quindi, per favore, non immaginare che lui (o io) pensi che questa soluzione sia una buona pratica.
PrintStream out = System.out;
out.println("hello");
Si dovrà creare un oggetto fuori prima. Ulteriori su questi qui:
// write to stdout
out = System.out;
out.println("Test 1");
out.close();
e ora non si "crea" un oggetto :) – sfussenegger
La documentazione ufficiale di Java usa il termine "creare l'oggetto" proprio come quello che credo si fa riferimento a "Instantiate "http://java.sun.com/docs/books/tutorial/java/javaOO/objectcreation.html –
Non creare o creare un'istanza di un oggetto. Basta copiare il riferimento. Quindi 'System.out' e' out' faranno riferimento allo stesso oggetto, ovvero 'System.out == out' sarà' true' – sfussenegger
Beh, viene in genere utilizzato
System.out.println("print something");
che non richiede alcuna importazione. Tuttavia, dal momento che fuori è un campo statico all'interno del sistema, si potrebbe scrivere utilizzare un'importazione statico come questo:
import static java.lang.System.*;
class Test {
public static void main(String[] args) {
out.println("print something");
}
}
Date un'occhiata a questo link. Normalmente lo faresti solo se stai usando molti metodi statici di una particolare classe, come lo uso sempre per i junit assert e easymock.
'out' non è un metodo, è un campo. – sfussenegger
doh! Grazie per averlo capito. Intendevo dire campo. – Casey
O semplicemente:
System.out.println("Some text");
@ risposta di sfussenegger spiega come fare questo lavoro. Ma direi che lo non lo faccio!
esperti programmatori Java usano, e si aspettano di vedere
System.out.println(...);
e non
out.println(...);
Un importazione statica System.out o System.err è (IMO) cattivo stile perché:
Se vi trovate a fare un sacco di uscita per System.out o System.err, penso che sia meglio di astrarre i flussi in attributi, variabili locali o metodi. Ciò renderà la tua applicazione più riutilizzabile.
Accetto un "Sistema" mancante. potrebbe essere confuso al primo sguardo. Tuttavia, l'uso di variabili o attributi locali non cambia nulla, vero? L'utilizzo di un 'protected void println (Object o) locale {System.out.println (o);}' potrebbe essere una buona idea anche se la destinazione di output potrebbe essere facilmente modificata, ad esempio 'log.info (o)' per esempio . – sfussenegger
@sfussenegger: l'uso di una variabile locale o di un attributo * semplifica la modifica della destinazione rispetto all'utilizzo di System.out in tutto il luogo ... indipendentemente dal fatto che System.out sia importato o meno. –
ok, è vero. Ma è anche possibile sostituire un'importazione statica di System.out con un campo chiamato, senza necessità di assegnare System.out a out. Ma generalmente, sono d'accordo con te. L'utilizzo di un'importazione statica di System.out non è più adatto a un semplice codice run-once. – sfussenegger
si può vedere questo anche in alveoli ...
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("hello");
out
è un PrintStream
tipo di variabile statica (oggetto) di System
classe e println()
è funzione della classe PrintStream
.
class PrintStream
{
public void println(){} //member function
...
}
class System
{
public static final PrintStream out; //data member
...
}
Ecco perché la variabile statica (oggetto) out
si accede con il nome di classe System
che richiama ulteriormente il metodo println()
del suo tipo PrintStream
(che è una classe).
semplicemente importazione:
import static java.lang.System.*;
con la maggior parte delle ide in questi giorni lo aggiusterà comunque per te, in eclissi esegui un'importazione e cambierà il tuo java.lang.System. *; a java.lang.System.out; per te (supponendo che stai usando solo) – hhafez