Το πολύ συνηθισμένο λάθος των αρχάριων είναι όταν προσπαθείτε να χρησιμοποιήσετε μια ιδιότητα μιας κλάσης "στατικά" χωρίς να δημιουργήσετε μια περίπτωση της κλάσης αυτής. Αυτό σας αφήνει με το αναφερόμενο μήνυμα σφάλματος:
Μπορείτε είτε να κάνετε τη μη στατική μέθοδο στατική είτε να δημιουργήσετε ένα παράδειγμα της συγκεκριμένης κλάσης για να χρησιμοποιήσετε τις ιδιότητές της.
Γιατί; Δεν ζητώ λύσεις. Θα ήμουν ευγνώμων να μάθω ποιος είναι ο λόγος πίσω από αυτό. Ο βασικός λόγος!
private java.util.List<String> someMethod(){
/* Some Code */
return someList;
}
public static void main(String[] strArgs){
// The following statement causes the error. You know why..
java.util.List<String> someList = someMethod();
}
Δεν μπορείς να ονομάσεις κάτι που δεν υπάρχει. Εφόσον δεν έχετε δημιουργήσει ένα αντικείμενο, η μη στατική μέθοδος δεν υπάρχει ακόμα. Μια στατική μέθοδος (εξ ορισμού) υπάρχει πάντα.
Η μέθοδος που προσπαθείτε να καλέσετε είναι μια μέθοδος επιπέδου instance- δεν έχετε instance.
Οι "στατικές" μέθοδοι ανήκουν στην κλάση, οι μη "στατικές" μέθοδοι ανήκουν στις περιπτώσεις της κλάσης.
Μια στατική μέθοδος συσχετίζει μια ενέργεια με έναν τύπο αντικειμένου, ενώ η μη στατική μέθοδος συσχετίζει μια ενέργεια με μια περίπτωση αυτού του τύπου αντικειμένου. Συνήθως πρόκειται για μια μέθοδο που κάνει κάτι σε σχέση με την περίπτωση.
Πχ:
η κλάση Car μπορεί να έχει μια μέθοδο wash, η οποία θα υποδείκνυε το πλύσιμο ενός συγκεκριμένου αυτοκινήτου, ενώ μια στατική μέθοδος θα εφαρμοζόταν στον τύπο car.