Sobes.tech
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); // καλεί την ιδιωτική μέθοδο
    }
}

Έτσι, η κανονική κλήση δεν είναι δυνατή, αλλά η ανακλαστικότητα επιτρέπει να παρακαμφθεί αυτός ο περιορισμός.