Preferisco usare un ciclo while , ma un'espressione nulla ti consente di scrivere questo:
for (;;) { thread.run(); }
Tuttavia, un'istruzione null ti consente di scrivere questo:
while(true);
{
thread.run();
}
Lo scopo principale è quello di perdere il tempo del programmatore di scarsa manutenzione che ti segue e si chiede perché il thread non sia in esecuzione. Una dichiarazione deve seguire un po '. Solo ; è una dichiarazione. Quindi questo blocco di istruzioni in realtà non fa parte del ciclo.
Ciò non significa che non ci siano buoni usi. Sono solo rari. Di solito sembrano così:
{
;
}
Perché in questo modo sembra che tu intenda farlo (anche questo a volte non è abbastanza).
Nell'assemblaggio questa dichiarazione nulla è chiamata NOP . In Python si chiama pass . In java (e gli altri figli di c) è un punto e virgola come hai detto, o addirittura affermare vero;
Conosco alcuni usi:
Semantico .
C'è una differenza tra uno spazio vuoto e lo zero verso il basso come risposta. Dice chiaramente, no, non ho dimenticato di mettere qualcosa qui. Questo niente è pensato per essere niente. Non è esplicito nulla. Questo spazio è stato lasciato intenzionalmente in bianco. Ecco come otteniamo la compilazione di N / A.
Il modello nullo
Immagina una complicata e costosa macchina per la segnalazione della luce che raccoglie ripetutamente una lampadina colorata da un nastro trasportatore, la avvita in una presa, la accende, la rimuove e raccoglie la successiva. Potresti controllare ciò che questa cosa ha segnalato dal colore delle lampadine che hai messo sulla cintura. Fantastico, ora che finalmente funziona alla perfezione il tuo capo vuole che tu crei un modo per controllare i tempi di questi segnali. Vuole aggiungere un divario tra i messaggi. Ricordi con orrore che molte parti hanno a cuore i tempi di questi segnali e che dolore è stato sincronizzarli. Come hai intenzione di controllare i tempi senza che questo ti mantenga al lavoro durante il fine settimana? Dai un'occhiata a un cestino di lampadine bruciate e ottieni un'idea brillante, non letteralmente brillante.
A volte vuoi usare il polimorfismo per spegnere qualcosa senza rompere nulla.
Debug
Quando si imposta un punto di interruzione, è necessario che ci sia un posto per il punto di interruzione. Ora certo alcuni debugger ti permetteranno di impostarlo sulla parentesi graffa di chiusura ma se non lo fanno è bello che la lingua ti permetta di forzare un posto dove metterne uno anche se quel posto non fa nulla.
Non proprio una cosa java ma c'è anche:
Fiddling binario
L'istruzione NOP degli assiemi consente di armeggiare con l'eseguibile binario compilato. Ma i moderni compilatori Java ottimizzano così tanto che non sono sicuro che il punto e virgola non vada semplicemente male. Ma ai vecchi tempi usavamo anche questi punti vuoti nell'eseguibile per controllare i tempi o permetterci di lasciarci andare in un secondo momento. Senza il NOP ci sarebbero delle istruzioni reali lì, quindi se volessi agganciare dovresti copiare quelle istruzioni da qualche altra parte per fare spazio al gancio. Funziona altrettanto bene nel linguaggio c da cui Java ottiene gran parte della sua sintassi. Ma non credo che questo giocherellamento con l'amo avvenga molto in Java. Per farlo utilizziamo la programmazione orientata agli aspetti .