User Tools

Site Tools


java:local_inner_classes

This is an old revision of the document!


Τοπικές κλάσεις

Μπορείτε να ορίσετε μία τοπική κλάση μέσα σε οποιοδήποτε μπλοκ κώδικα, δηλαδή μέσα στο σώμα μίας μεθόδου μέσα σε στα άγκυστρα ενός if statement ή μέσα στο σώμα μία εντολής ανακύκλωσης for() ή while(). Δείτε το παρακάτω παράδειγμα κώδικα.

LocalClassExample.java
public class LocalClassExample {
 
  String regularExpression = "[^0-9]";
 
  public void validatePhoneNumber(String phoneNumber1, String phoneNumber2) {
 
    final int numberLength = 10;
 
    class PhoneNumber {
 
      String formattedPhoneNumber = null;
 
      PhoneNumber(String phoneNumber){        
        regularExpression = "[^0-9]";
        // numberLength = 7;
        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) {
    LocalClassExample lce = new LocalClassExample();
    lce.validatePhoneNumber("123-456-7890", "456-7890");
  }
}

Πρόσβαση στα μέλη της εξωτερικής κλάσης

Μία τοπική κλάση έχει πρόσβαση στα μέλη της εξωτερικής κλάσης. Στο προηγούμενο παράδειγμα, παρατηρήστε πως ο κατασκευαστής της κλάσης PhoneNumber έχει πρόσβαση στην μεταβλητή LocalClassExample.regularExpression.

java/local_inner_classes.1430400641.txt.gz · Last modified: 2015/04/30 12:30 (external edit)