Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    3

    [Java] Ridefinizione (estensione) PrintStream

    Ciao ragazzi,
    sono un bel po' nella cacca, sto impazzendo perchè ho la tesi fra meno di un mese e sono molto in ritardo coi tempi, ma soprattutto ho questo maledetto problema.
    Ho scaricato delle librerie di java che mi aiutano molto per quello che devo fare, ma ogni volta che istanzio un oggetto con la classe definita dal nuovo package appare l'intestazione dell'autore e la versione del programma, stampata (presumo) da una semplice System.out.println().
    Non è che non le voglia, cioè è giusto che ci sia l'intestazione (cito e spiego anche per benino l'autore delle classi importate nella tesi) solo che appare più volte (per ogni oggetto della classe) e il problema più grande è che il codice lo proverò durante la laurea e non sarebbe tanto carino che ad ogni prova che faccio appare 3 o 4 volte questa intestazione che non centra nulla con il resto.

    Sono due giorni che cerco un modo di toglierla, ho scaricato dei decompilatori per ridefinire le classi ma sono troppo complesse e non ce la fa. Ho capito che l'unico modo per toglierla è estendere PrintStream con una nuova classe e al momento di ridefinire la println() aggiungere un if che controlla se la stringa da stampare sia diversa dall'intestazione che devo togliere.

    Ho cercato di estendere la classe ma non riesco proprio! (ho cercato sul web ma ho trovato solo casi strasemplici)
    anche se scrivo solo
    codice:
    import java.io.*;
    
    public class PrintStream2 extends java.io.PrintStream{
    
    }
    mi dice che manca il costruttore, e il costruttore vuole in ingresso un dato che sia di un certo tipo (metto string), a questo punto mi trovo in questa situazione
    codice:
    public class PrintStream2 extends java.io.PrintStream{
    	public PrintStream2(String fileName) throws FileNotFoundException {
    		super(fileName);
    	}
    public void println(String s){
    
    }
    }
    ma dentro il metodo println cosa cavolo devo metterci? potreste darmi qualche dritta utile?

  2. #2

    Moderazione

    Java è trattato nella sezione apposita, sposto.

    Comunque, forse la cosa più sensata è contattare l'autore di queste librerie e chiedere a lui, se lo stai citando e tutto quanto non credo che avrà da ridire.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    3
    che scemo, manco considerata tra le più remote possibilità..eheh!
    ah pardon per la discussione, la sezione java me l'ero persa.

    grazie davvero per ora, se non mi dovesse rispondere avrete mie notizie (:

  4. #4
    Allora la strada intrapresa può essere quella giusta, anche se magari prova a dare anche un occhio alle librerie di logging come per esempio Log4j che permette appunto di scegliere cosa e dove far stampare le informazioni di logging.
    Il problema tuo è che hai prima di tutto "sbagliato" l'implementazione dell'estensione del PrintStream in particolare l'implementazione del costruttore, quello che ti serve a te è di ridifinire il costruttore che accetta come parametro non il file ma un OutputStream :
    codice:
    public class PrintStream2 extends java.io.PrintStream{
    	public PrintStream2(OutputStream out){
    		super(out);
    	}
    public void println(String s){
    
    }
    }
    Nel metodo println dovrai appunto mettere la tua logica di stampa in modo da far stampare solamente quello che ti interessa.
    codice:
    //se la stringa da stampare non contiene "l'intestazione"
    if(!s.contains("LA STRINGA CHE VOGLIO CERCARE"))
    {
       //invoco l'implementazione del metodo della classe padre
       super.println(s);
    }
    Un esempio di utilizzo da fare come prima operazione allo startup dell'applicativo
    codice:
    PrintStream myStream = new MyPrintStream(System.out);
    System.setOut(myStream);

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    3
    fra..io ti amo. cioè sento di amarti proprio, forse anche sessualmente capito!??
    WAAAAAAAAAHAHAAA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    grazie un miliardo bro! (:

  6. #6
    Originariamente inviato da mkrown
    fra..io ti amo. cioè sento di amarti proprio, forse anche sessualmente capito!??
    WAAAAAAAAAHAHAAA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    grazie un miliardo bro! (:
    Mi spiace appartengo ad un'altra parrocchia.....

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.