java:anon_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
Last revision Both sides next revision
java:anon_inner_classes [2016/02/26 11:15]
127.0.0.1 external edit
java:anon_inner_classes [2017/05/12 14:37]
gthanos
Line 2: Line 2:
  
 Οι ανώνυμές εμφωλευμένες κλάσεις επιτρέπουν τον ταυτόχρονο ορισμό της υλοποίησης της κλάσης μαζί με την δημιουργία ενός αντικειμένου της κλάσης αυτής, σε μία εντολή. Οι κλάσεις αυτές **ΠΡΕΠΕΙ** **α)** __να υλοποιούν ένα υφιστάμενο interface__ ή **β)** __να επεκτείνουν μία υφιστάμενη κλάση__. Δείτε το παράδειγμα που παρουσιάστηκε στις μη στατικές εμφωλευμένες κλάσεις αλλαγμένο,​ ώστε να χρησιμοποιεί ανώνυμες κλάσεις Οι ανώνυμές εμφωλευμένες κλάσεις επιτρέπουν τον ταυτόχρονο ορισμό της υλοποίησης της κλάσης μαζί με την δημιουργία ενός αντικειμένου της κλάσης αυτής, σε μία εντολή. Οι κλάσεις αυτές **ΠΡΕΠΕΙ** **α)** __να υλοποιούν ένα υφιστάμενο interface__ ή **β)** __να επεκτείνουν μία υφιστάμενη κλάση__. Δείτε το παράδειγμα που παρουσιάστηκε στις μη στατικές εμφωλευμένες κλάσεις αλλαγμένο,​ ώστε να χρησιμοποιεί ανώνυμες κλάσεις
- 
-<code java DataStructure.java>​ 
-public class DataStructure { 
-  ​ 
-  // Create an array 
-  private final static int SIZE = 15; 
-  private int[] arrayOfInts = new int[SIZE]; 
-  ​ 
-  public DataStructure() { 
-    // fill the array with ascending integer values 
-    for (int i = 0; i < SIZE; i++) { 
-      arrayOfInts[i] = i; 
-    } 
-  } 
-  ​ 
-  interface DataStructureIterator extends java.util.Iterator<​Integer>​ { }  
-  ​ 
-  public void printEven() { 
-    ​ 
-    // Print out values of even indices of the array 
-    DataStructureIterator iterator = new DataStructureIterator() { 
-      // Start stepping through the array from the beginning 
-      private int nextIndex = 0; 
-    ​ 
-      public boolean hasNext() { 
-        ​ 
-      // Check if the current element is the last in the array 
-      return (nextIndex <= SIZE - 1); 
-      }    ​ 
-    ​ 
-      public Integer next() { 
-      ​ 
-      // Record a value of an even index of the array 
-      Integer retValue = Integer.valueOf(arrayOfInts[nextIndex]);​ 
-      ​ 
-      // Get the next even element 
-      nextIndex += 2; 
-      return retValue; 
-      } 
-    ​ 
-      public void remove() { } 
-    ​ 
-    }; 
-    while (iterator.hasNext()) { 
-      System.out.print(iterator.next() + " "); 
-    } 
-    System.out.println();​ 
-  } 
-  ​ 
-  public static void main(String s[]) { 
-    DataStructure ds = new DataStructure();​ 
-    ds.printEven();​ 
-  } 
-} 
-</​code>​ 
- 
-Παρατηρήστε ότι η ορίζουμε μία νέα κλάση που υλοποιεί το interface //​DataStructureIterator//​ χωρίς να δώσουμε όνομα στην νέα κλάση (η κλάση προσδιορίζεται από τον τύπο δεδομένων που ορίζει το interface). Παράλληλα με τον ορισμό της κλάσης,​ δημιουργείται ένα νέο αντικείμενο,​ στο οποίο δείχνει η μεταβλητή //​iterator//​. Η συγκεκριμένη κλάση δημιουργήθηκε με βάση το inteface //​DataStructureIterator//​. Παρακάτω δίνεται ένα άλλο παράδειγμα,​ όπου η ανώνυμη κλάση επεκτείνει μία υφιστάμενη κλάση αντί για ένα inteface. 
  
 <code java HelloWorldAnonymousClasses.java>​ <code java HelloWorldAnonymousClasses.java>​
java/anon_inner_classes.txt · Last modified: 2017/05/12 14:44 by gthanos