[RESOLVIDO] Usar System.out de dentro de um metodo
6 respostas
revton
Pessoal, estou querendo pegar todos os system.out que ocorrem dentro de classes que não tenho acesso e usar.
Um exemplo para ficar melhor o que eu quero.
importjavax.swing.JOptionPane;publicclassClass1{publicstaticvoidmain(String[]args){metodo1();metodo2();// Usar os system para imprimir por exemplo em um MessageDialog// Atribuir o valor de string que estão no metodo1 e metodo2 ao sytemOut (Sem usar return)StringsystemOut="";JOptionPane.showMessageDialog(null,systemOut);}privatestaticvoidmetodo2(){Stringstring="METODO2!!!!";System.out.println(string);}privatestaticvoidmetodo1(){Stringstring="METODO1!!!!";System.out.println(string);}}
Soluções do tipo o metodo1 e metodo2 retornar uma String não são válidos.
A pergunta é tem como eu pegar os System.out.println que estão nos metodo1 e metodo2?
revton, não entendi o que exatamente você está querendo fazer…
Você que dinamicamente dizer aos métodos 1 e 2 o que ele vão imprimir no System.out.println() ?
Se é isso, que tal passar os valores como parametro para os métodos?
Frantic_Avenger
flaviochess:
revton, não entendi o que exatamente você está querendo fazer…
Você que dinamicamente dizer aos métodos 1 e 2 o que ele vão imprimir no System.out.println() ?
Se é isso, que tal passar os valores como parametro para os métodos?
Ele quer retornar uma String dos metódos sem dar return pois ele não tem acesso aos códigos dos métodos.
Resumindo pelo que entendi é isso.
revton
Frantic Avenger:
flaviochess:
revton, não entendi o que exatamente você está querendo fazer…
Você que dinamicamente dizer aos métodos 1 e 2 o que ele vão imprimir no System.out.println() ?
Se é isso, que tal passar os valores como parametro para os métodos?
Ele quer retornar uma String dos metódos sem dar return pois ele não tem acesso aos códigos dos métodos.
Resumindo pelo que entendi é isso.
Exatamente isso Frantic Avenger, alguém tem uma ideia de como fazer isso?
pmlm
O System.out é um PrintStream. Podes fazer System.setOut com outro PrintStream e o System.out passa a escrever para esse PrintStream.
No caso específico:
privatevoiddoWork(){//stores original outPrintStreamoriginalOut=System.out;//Creates my out and sets it as standard outStringOutputStreammyStringOut=newStringOutputStream();PrintStreamnewOut=newPrintStream(myStringOut);System.setOut(newOut);//invoke methods with printlnrandomMethod();anotherRandomMethod();//restore System outSystem.setOut(originalOut);//now print saved stringSystem.out.println("ONLY PRINT IN THE END: "+myStringOut.getString());}privatevoidrandomMethod(){System.out.println("Random String");}privatevoidanotherRandomMethod(){System.out.println("bla bla bla");System.out.println("other line with bla bla bla");}
O System.out é um PrintStream. Podes fazer System.setOut com outro PrintStream e o System.out passa a escrever para esse PrintStream.
No caso específico:
privatevoiddoWork(){//stores original outPrintStreamoriginalOut=System.out;//Creates my out and sets it as standard outStringOutputStreammyStringOut=newStringOutputStream();PrintStreamnewOut=newPrintStream(myStringOut);System.setOut(newOut);//invoke methods with printlnrandomMethod();anotherRandomMethod();//restore System outSystem.setOut(originalOut);//now print saved stringSystem.out.println("ONLY PRINT IN THE END: "+myStringOut.getString());}privatevoidrandomMethod(){System.out.println("Random String");}privatevoidanotherRandomMethod(){System.out.println("bla bla bla");System.out.println("other line with bla bla bla");}
importjava.io.PrintStream;publicclassClass1{publicstaticvoidmain(String[]args){PrintStreamoriginalOut=System.out;//Creates my out and sets it as standard outStringOutputStreammyStringOut=newStringOutputStream();PrintStreamnewOut=newPrintStream(myStringOut);System.setOut(newOut);metodo1();metodo2();//restore System outSystem.setOut(originalOut);}privatestaticvoidmetodo2(){System.out.println("METODO2!!!!");}privatestaticvoidmetodo1(){System.out.println("METODO1!!!!");}}