Page 1 of 1
Λειτουργία Getclass στην Java
Posted: Sun May 29, 2011 1:11 pm
by vrasmospm
Γνωρίζει κάποιος ακριβώς την λειτουργία της getclass στην Java;;;
Συγκεκριμένα θέλω να εκτυπώσω όλα τα περιεχόμενα μιας από τις 5 κλάσεις που είναι μέσα σε μία λίστα. Γνωρίζει κανείς πώς μπορώ να το κάνω;;
Ευχαριστώ πολύ.
Re: Λειτουργία Getclass στην Java
Posted: Sun May 29, 2011 1:15 pm
by necrofear_13
Καλύτερα δοκίμασε με instanceof αντί με getClass(). Google it a bit και θα βρεις άκρη εύκολα.
Re: Λειτουργία Getclass στην Java
Posted: Sun May 29, 2011 6:19 pm
by Loner
Με μια πρόχειρη αναζήτηση και αν κατάλαβα καλά τι ζητάς, βρήκα
αυτό. Εν συντομία:
Code: Select all
AwesomeClass className= new AwesomeClass();
Field[] fields = className.getClass().getDeclaredFields();
for ( Field field : fields ) {
System.out.print("Variable Name: "+field.getName()+", value: "+field.get(className));
}
AwesomeClass είναι το όνομα της τάξης σου.
Το field.get(className) δουλεύει μόνο αν είναι public οι μεταβλητές στην AwesomeClass σου
Πιο απλό είναι να φτιάξεις μία toString μέσα στην class σου,δεν είναι καθόλου δύσκολο,δες
εδώ.
Για την getDeclaredFields()
- Spoiler: εμφάνιση/απόκρυψη
[quote]getDeclaredFields
public Field[] getDeclaredFields()
throws SecurityException
Returns an array of Field objects reflecting all the fields declared by the class or interface represented by this Class object. This includes public, protected, default (package) access, and private fields, but excludes inherited fields. The elements in the array returned are not sorted and are not in any particular order. This method returns an array of length 0 if the class or interface declares no fields, or if this Class object represents a primitive type, an array class, or void.[/quote]
http://download.oracle.com/javase/1,5.0/docs/api/java/lang/Class.html#getDeclaredFields()
Re: Λειτουργία Getclass στην Java
Posted: Sun May 29, 2011 6:34 pm
by vrasmospm
Σόρρυ αν δεν μπορώ να καταλάβω ακριβώς κάποια πράγματα.
Λοιπόν σε μία λίστα μπορούμε να αποθηκεύσουμε δεδομένα τύπου Item. Δηλαδή πχ κατάστημα υπολογιστών, μέσα στο κατάστημα υπάρχουν lap top και desktop. Στα laptop υπάρχουν τα 2πύρηνα και τα τετραπύρηνα, στα desktop τα 4πύρηνα και τα 8 πύρηνα.
Πώς θα μπορέσω εγώ από τη λίστα η οποία τα περιέχει όλα να εκτυπώσω μόνο τα laptop ή μόνο τα 8πύρηνα(που αναγκαστικά είναι desktop);;
Ελπίζω να έγινα κατανοητός.
Re: Λειτουργία Getclass στην Java
Posted: Sun May 29, 2011 7:27 pm
by Zifnab
vrasmospm wrote:Σόρρυ αν δεν μπορώ να καταλάβω ακριβώς κάποια πράγματα.
Λοιπόν σε μία λίστα μπορούμε να αποθηκεύσουμε δεδομένα τύπου Item. Δηλαδή πχ κατάστημα υπολογιστών, μέσα στο κατάστημα υπάρχουν lap top και desktop. Στα laptop υπάρχουν τα 2πύρηνα και τα τετραπύρηνα, στα desktop τα 4πύρηνα και τα 8 πύρηνα.
Πώς θα μπορέσω εγώ από τη λίστα η οποία τα περιέχει όλα να εκτυπώσω μόνο τα laptop ή μόνο τα 8πύρηνα(που αναγκαστικά είναι desktop);;
Ελπίζω να έγινα κατανοητός.
Λοιπόν
Έστω ότι έχεις, με βάση την περιγραφή σου (και κάπως διορθωμένα καθώς δεν θα κάνεις νέα κλαση για κάθε αριθμό πυρήνων):
Code: Select all
class Katastima {
List<MyItem> mylist= new List<MyItem>();
}
Και έστω
Code: Select all
class MyItem { }
class Laptop extends MyItem() {
public int numofcores;
public void toString() {
return "Eimai ena Item";
}
}
class Desktop extends MyItem() {
public int numofcores;
}
Θα κάνεις
Code: Select all
for(item : mylist) {
//έλεγχος item
}
Για έλεγχο του item βάζεις κάτι σαν τα παρακάτω:
Για να βρεις τα Laptop και όλες τις κλάσσεις που τα κάνουν extend
Code: Select all
if (item instanceof Laptop) { System.out.println(item); }
Αν θές να βρεις τα αντικείμενα που είναι κλάσσης Laptop
Code: Select all
if (item.getClass()=="Laptop.class") { System.out.println(item); }
Αν θες πχ Desktop και 8πύρηνα
Code: Select all
if (item instanceof Desktop && item.numofcores==8) { System.out.println(item); }
Οι κώδικες μπορεί να περιέχουν συντακτικά λάθη, γιατί έχω να γράψω java κανένα χρόνο

Re: Λειτουργία Getclass στην Java
Posted: Sun May 29, 2011 7:43 pm
by Loner
Re: Λειτουργία Getclass στην Java
Posted: Sun May 29, 2011 9:00 pm
by netharis
Zifnab wrote:
Code: Select all
foreach(item : mylist) {
//έλεγχος item
}
Ι'm pretty sure "foreach" is not a valid keyword

Re: Λειτουργία Getclass στην Java
Posted: Sun May 29, 2011 9:57 pm
by Zifnab
netharis wrote:Zifnab wrote:
Code: Select all
foreach(item : mylist) {
//έλεγχος item
}
Ι'm pretty sure "foreach" is not a valid keyword

PHP speaks in me
fixed it
