User Tools

Site Tools


java:local_inner_classes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:local_inner_classes [2015/04/30 13:47]
gthanos [Τοπικές κλάσεις]
java:local_inner_classes [2021/04/12 04:54]
Line 1: Line 1:
-====== Τοπικές κλάσεις ====== 
- 
-Μπορείτε να ορίσετε μία τοπική κλάση μέσα σε οποιοδήποτε μπλοκ κώδικα, δηλαδή μέσα στο σώμα μίας μεθόδου μέσα σε στα άγκυστρα ενός //if// statement ή μέσα στο σώμα μία εντολής ανακύκλωσης //for()// ή //while()//. Δείτε το παρακάτω παράδειγμα κώδικα. 
- 
-<code java 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; 
-      } 
-       
-      // Valid in JDK 8 and later 
-//    public void printOriginalNumbers() { 
-//      System.out.println("Original numbers are " + phoneNumber1 + 
-//          " and " + phoneNumber2); 
-//    }       
-    } 
- 
-    PhoneNumber myNumber1 = new PhoneNumber(phoneNumber1); 
-    PhoneNumber myNumber2 = new PhoneNumber(phoneNumber2); 
-     
-    // Valid in JDK 8 and later: 
- 
-//  myNumber1.printOriginalNumbers(); 
-     
-    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"); 
-  } 
-} 
-</code> 
-===== Πρόσβαση στα μέλη της εξωτερικής κλάσης από την τοπική κλάση ===== 
- 
-Μία τοπική κλάση έχει πρόσβαση στα μέλη της εξωτερικής κλάσης. Στο προηγούμενο παράδειγμα, παρατηρήστε πως ο κατασκευαστής της κλάσης //PhoneNumber// έχει πρόσβαση στην μεταβλητή //**LocalClassExample.regularExpression**//. 
- 
-===== Πρόσβαση στις τοπικές μεταβλητές της μεθόδου ===== 
- 
-Μία τοπική κλάση έχει πρόσβαση στις τοπικές μεταβλητές της μεθόδου μέσα στην οποία συνήθως ορίζεται μόνο αν αυτές έχουν οριστεί ως //final//. Δηλώνοντας μία μεταβλητή ως //final// δηλώνουμε ότι η τιμή αυτή δεν πρόκειται και δεν μπορεί να αλλάξει. Αν βγάλετε τα σχόλια από την γραμμή 15,  
-<code java>//numberLength = 7;</code>  
-θα παρατηρήσετε ότι λαμβένετε το παρακάτω μήνυμα λάθους 
-<code> 
-LocalClassExample.java:15: error: cannot assign a value to final variable numberLength 
-        numberLength = 7; 
-</code> 
- 
  
java/local_inner_classes.txt · Last modified: 2021/04/12 04:54 (external edit)