java:generics

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 Both sides next revision
java:generics [2015/03/15 20:08]
gthanos [Παραμετρικοί τύποι δεδομένων με πολλές παραμέτρους]
java:generics [2015/03/15 20:20]
gthanos [Παραμετρικοί τύποι δεδομένων με πολλές παραμέτρους]
Line 117: Line 117:
 } }
 </​code>​ </​code>​
 +
 +===== Απλοί παραμετρικοί τύποι δεδομένων (Raw Generic Types) =====
 +
 +Εάν δεν χρησιμοποιήσουμε καμία παράμετρο τότε καταλήγουμε να έχουμε έναν "​απλό"​ παραμετρικό τύπο δεδομένων γνωστό ως **Raw types**. Η χρήση των τύπων αυτών δυσκολεύει τον compiler να αποφασίσει για την ασφαλή ή μη χρήση δεδομένων αυτού του τύπου, ειδικά όταν τα δεδομένα αυτά χρησιμοποιούνται μαζί με παραμετρικούς τύπους δεδομένων. Δείτε τα παρακάτω παραδείγματα κώδικα
 +
 +<code java>
 +Box<​String>​ stringBox = new Box<>​();​
 +Box rawBox = stringBox; ​              // Safe - OK
 +</​code>​
 +
 +<code java>
 +Box rawBox = new Box(); ​          // rawBox is a raw type of Box<​T>​
 +Box<​Integer>​ intBox = rawBox; ​    // warning: unchecked conversion
 +</​code>​
 +
 +<code java>
 +Box<​String>​ stringBox = new Box<>​();​
 +Box rawBox = stringBox;
 +rawBox.set(8); ​             // warning: unchecked invocation to set(T)
 +</​code>​
 +
 +==== Unchecked Error Messages ====
 +
 +Όπως είπαμε προηγούμενα η μίξη generics με raw types μπορεί να δημιουργήσει warnings κατά την μεταγλώττιση της μορφής
 +<​code>​
 +Note: Example.java uses unchecked or unsafe operations.
 +Note: Recompile with -Xlint:​unchecked for details.
 +</​code>​
 +όπως παρακάτω
 +<code java WarningDemo.java>​
 +public class WarningDemo {
 +    public static void main(String[] args){
 +        Box<​Integer>​ bi;
 +        bi = createBox();​
 +    }
 +
 +    static Box createBox(){
 +        return new Box();
 +    }
 +}
 +</​code>​
 +Μεταγλωττίζοντας με το flag ''​-Xlint:​unchecked''​ εμφανίζει την παραπάνω χρήση
 +<​code>​
 +WarningDemo.java:​4:​ warning: [unchecked] unchecked conversion
 +found   : Box
 +required: Box<​java.lang.Integer>​
 +        bi = createBox();​
 +                      ^
 +1 warning
 +</​code>​
 +
 +
 +
  
  
java/generics.txt · Last modified: 2017/02/17 15:01 by gthanos