[Java_Tutorial]31강-자바 코딩, 지역 클래스[Local Classes, 자바 프로그래밍 기초 , 자바 튜토리얼]
Software/Java 2019. 7. 29. 22:05[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.]
[Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼]
지역 클래스 (Local Classes)
로컬(지역) 클래스(Local classes)는 중괄호{ } 사이에 0개 또는 그 이상의 구문의 그룹이 있는 블록에 정의된 클래스다. 일반적으로 메서드의 몸체에서 지역변수가 정의된 걸 찾을 수 있다.
지역 클래스 선언 (Declaring Local Classes)
어떤 블록 안에서 지역 클래스를 선언할 수 있다. 예를 들어 for루프나 if절의 메서드 몸체 내에서 지역 클래스를 선언할 수 있다는 의미다.
아래 예제는 지역 클래스의 샘플 프로그램이다. 2개의 전화번호를 체크하는데 지역 클래스인 PhomeNumber는 메서드 validatePhoneNumber내에 정의되어 있다.
public class LocalClassExample {
static String regularExpression = "[^0-9]";
public static void validatePhoneNumber(String phoneNumber1, String phoneNumber2) {
final int numberLength = 10;
class PhoneNumber {
String formattedPhoneNumber = null;
PhoneNumber(String phoneNumber){
String currentNumber = phoneNumber.replaceAll(regularExpression, "");
if(currentNumber.length() == numberLength)
formattedPhoneNumber = currentNumber;
else
formattedPhoneNumber = null;
}
public String getNumber() {
return formattedPhoneNumber;
}
}
PhoneNumber myNumber1 = new PhoneNumber(phoneNumber1);
PhoneNumber myNumber2 = new PhoneNumber(phoneNumber2);
if (myNumber1.getNumber() == null)
System.out.println("First number is invalid");
else
System.out.println("First number is " + myNumber1.getNumber());
if (myNumber2.getNumber() == null)
System.out.println("Second number is invalid");
else
System.out.println("Second number is " + myNumber2.getNumber());
}
public static void main(String[] args) {
validatePhoneNumber("123-123-1234", "234-0009");
}
}
위 예제는 입력한 전화 번호에서 0부터 9외의 모든 문자들을 먼저 제거하는 것으로 전화번호인지를 입증한다. 이 후 정확하게 10개의 숫자로 이루어진 전화번호인지 체크한다. 위 예제의 결과는 다음과 같다.
First number is 1231231234
Second number is invalid