package com.beust.jcommander.internal; import com.beust.jcommander.ParameterException; import java.io.PrintWriter; import java.lang.reflect.Method; public class JDK6Console implements Console { private Object console; private PrintWriter writer; public JDK6Console(Object console) throws Exception { this.console = console; Method writerMethod = console.getClass().getDeclaredMethod("writer", new Class<?>[0]); writer = (PrintWriter) writerMethod.invoke(console, new Object[0]); } public void print(String msg) { writer.print(msg); } public void println(String msg) { writer.println(msg); } public char[] readPassword(boolean echoInput) { try { writer.flush(); Method method; if (echoInput) { method = console.getClass().getDeclaredMethod("readLine", new Class<?>[0]); return ((String) method.invoke(console, new Object[0])).toCharArray(); } else { method = console.getClass().getDeclaredMethod("readPassword", new Class<?>[0]); return (char[]) method.invoke(console, new Object[0]); } } catch (Exception e) { throw new ParameterException(e); } } }