Console — JVM과 연결된 콘솔 장치 접근
Console — JVM과 연결된 콘솔 장치 접근
Console은 현재 Java 가상 머신(JVM)과 연결된 콘솔 장치에 접근하는 메서드를 제공하는 클래스예요. 이 가상 머신에 콘솔이 있다면 이 클래스의 유일한 인스턴스로 표현되며, System.console()를 호출해 얻을 수 있어요. 가상 머신에 콘솔이 없으면 해당 메서드는 null을 반환해요.
본문
가상 머신에 콘솔이 있는지는 기반 플랫폼과 가상 머신이 시작된 방식에 따라 달라져요. 표준 입력·출력 스트림을 리다이렉트하지 않고 대화형 명령줄에서 시작한 경우 콘솔이 존재하며 보통 키보드와 디스플레이에 연결됩니다. 백그라운드 작업 스케줄러처럼 자동으로 시작된 경우에는 콘솔이 없을 수 있어요.
이 클래스는 java.lang.Object를 상속하고 Flushable을 구현하는 sealed 클래스예요. 읽기와 쓰기 연산은 동기화되어 멀티스레드 시나리오에서 원자적 블록을 보장해요. 별도로 명시하지 않는 한, 어떤 메서드에 null 인자를 전달하면 NullPointerException이 던져져요. 비밀번호나 보안 데이터를 읽는 애플리케이션은 처리 후 반환된 문자 배열을 수동으로 0으로 만들어 메모리에서 민감한 데이터의 수명을 최소화해야 해요.
생성자
Console은 시스템에서 인스턴스를 관리하므로 직접 공개 생성자는 제공되지 않고 System.console()로 얻어요.
메서드
Charset charset()—Console에 사용되는Charset객체를 반환해요.void flush()— 콘솔을 플러시하고 버퍼링된 출력을 즉시 쓰도록 해요.Console format(String fmt, Object... args)— 지정한 형식 문자열과 인자로 콘솔 출력 스트림에 써요.Console printf(String format, Object... args)— 지정한 형식 문자열과 인자로 편리하게 출력해요.Reader reader()— 이 콘솔과 연결된 유일한Reader객체를 검색해요.String readLine()— 콘솔에서 텍스트 한 줄을 읽어요.String readLine(String fmt, Object... args)— 형식화된 프롬프트를 제공한 뒤 콘솔에서 텍스트 한 줄을 읽어요.char[] readPassword()— 에코(echo)를 비활성화한 채 콘솔에서 비밀번호나 암호구를 읽어요.char[] readPassword(String fmt, Object... args)— 형식화된 프롬프트를 제공한 뒤 에코를 비활성화해 비밀번호를 읽어요.PrintWriter writer()— 이 콘솔과 연결된 유일한PrintWriter객체를 검색해요.
Console은 신뢰할 수 없는 데이터가 화면에 보이지 않게 비밀번호 입력을 안전하게 처리하고, 콘솔 고유 문자 집합을 자동으로 다룬다는 장점이 있어요.