Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Java] Come abbreviare System.out?

    Volevo definirmi una classe in cui definivo un metodo di stampa personalizzato per abbreviare System.out invece di scriverlo ogni volta nelle classi che creo.

    Ricordo che si poteva fare, ricordo di averlo fatto, ma ora non mi viene proprio.
    Mi pare si dovesse usare PrintStream ma come?

    Ulteriori chiarimenti:

    Nelle mie classi voglio poter creare un oggetto a che dando il comando:
    a.println("stringa da scrivere") mi stampi direttamente.

  2. #2
    Sinceramente non vedo l'utilità di ciò che vuoi fare, comunque in base alle tue richieste dovresti fare una cosa del tipo:

    codice:
    public class Stampa {
    
        public void println(String text) {
            System.out.println(text);
        }
    
    }
    e nel codice in cui vuoi utilizzarlo:

    codice:
    ...
    Stampa a = new Stampa();
    ...
    a.println("stringa da scrivere");
    ...
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,317
    Forse intendi usare direttamente l'oggetto PrintStream, senza passare per la sua classe contenitrice System?

    codice:
    public static void main(String[] args) {
       PrintStream out = System.out;
    
       // D'ora in poi puoi usare direttamente "out.println"
       out.println("Ciao");
    }
    O forse parli dello static-import?

    codice:
    import static java.lang.System.*;
    ...
    public static void main(String[] args) {
       out.println(" ... ");
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Intendevo quella di satifal ma anche la tua LeleFT non è male.
    A volte inciampo su sciocchezze
    Grazie ^_^

  5. #5
    Quelle di LeleFT sono soluzioni sicuramente più pulite e migliori. Poi, ovviamente dipende tutto dal contesto applicativo.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    satifal chiedeva l'utilità di questo mestiere qui.
    L'unica utilità che ci vedo è andare a mascherare l'oggetto che effettivamente fa la print ed in questo caso ha senso un passaggio di questo tipo.
    Alternativamente, mascherare una cosa del genere solo perché non si ha voglia di scrivere System.out mi ricorda molto i typedef del C e mi fa pensare che diminuisce la manutenibilità del codice (in ogni classe devi ricordarti a cosa si riferisce l'alias e a dove l'hai definito per poi scoprire che era una banale System.out) e la sconsiglio.

    Personale opinione (non me ne vogliate a male): quelli di LeleFt e di satifal sono 2 approcci differenti e non è detto che uno sia migliore dell'altro: il primo si limita ad usare un import o cmq un oggetto dello standard come un qualsiasi altro oggetto, il secondo crea un wrapper per la stampa (che in teoria posso fare in qualsiasi modo)

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,317
    Dico la mia.

    Nel caso specifico, ovvero l'accorciare una System.out.println, non trovo grandi utilità.

    In generale, fra le due soluzioni preferisco di gran lunga quella di satifal: ovunque debba "limitare" li numero di salti, costruisco un wrapper: è più in linea con il mio modo di programmare.

    Le soluzioni che ho postato io sono solo a contorno nella panoramica delle soluzioni; non le ho mai usate in vita mia, né la prima (per i motivi espressi sopra), né la seconda: lo static-import è un feature introdotta con le ultime versioni di Java di cui io, personalmente, non ho mai sentito l'esigenza e che, al contrario, evito come la peste perchè rendono (a mio personalissimo parere) molto meno chiaro il codice.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.