Junior — Middle
Μπορεί κανείς να καλέσει μια ιδιωτική μέθοδο μιας κλάσης εκτός από τον ορισμό της;
sobes.tech AI
Απάντηση από AI
Στη Java, δεν είναι δυνατή η άμεση κλήση μιας ιδιωτικής μεθόδου μιας κλάσης από έξω από τον ορισμό της, καθώς ο τροποποιητής private περιορίζει την πρόσβαση μόνο εντός της ίδιας της κλάσης.
Ωστόσο, με τη βοήθεια της ανακλαστικότητας (reflection), είναι δυνατή η πρόσβαση και η κλήση ιδιωτικών μεθόδων παρά τους περιορισμούς. Για παράδειγμα:
import java.lang.reflect.Method;
class MyClass {
private void secret() {
System.out.println("Κλήση ιδιωτικής μεθόδου");
}
}
public class Test {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass();
Method method = MyClass.class.getDeclaredMethod("secret");
method.setAccessible(true); // καταργεί τον περιορισμό πρόσβασης
method.invoke(obj); // καλεί την ιδιωτική μέθοδο
}
}
Έτσι, η κανονική κλήση δεν είναι δυνατή, αλλά η ανακλαστικότητα επιτρέπει να παρακαμφθεί αυτός ο περιορισμός.