This shows you the differences between two versions of the page.
java:local_inner_classes [2015/04/30 13:30] gthanos [Πρόσβαση στα μέλη της εξωτερικής κλάσης] |
java:local_inner_classes [2016/02/26 11:15] |
||
---|---|---|---|
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; | ||
- | } | ||
- | | ||
- | } | ||
- | |||
- | 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"); | ||
- | } | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Πρόσβαση στα μέλη της εξωτερικής κλάσης ===== | ||
- | |||
- | Μία τοπική κλάση έχει πρόσβαση στα μέλη της εξωτερικής κλάσης. Στο προηγούμενο παράδειγμα, παρατηρήστε πως ο κατασκευαστής της κλάσης //PhoneNumber// έχει πρόσβαση στην μεταβλητή //**LocalClassExample.regularExpression**//. | ||
- | |||