Question

Est-il possible pour une méthode de connaître le type de la méthode dont elle est appelée? Ainsi, par exemple dans le code psuedo orienté objet suivant:

Instance io = new InstanceSubclass();
io.doStuff();

Y a-t-il une langue qui permet doStuff() pour savoir qu'il a été appelé comme un Instance?

La question est née du fait que le java ne fournit aucun type de prise en charge des affrontements de noms d'interface, par exemple si vous créez une classe qui implémente les interfaces A et B qui ont tous deux une signature de méthode telle que void doWork() Serait-il possible pour le corps de doWork() Pour faire quelque chose de similaire à ce qui suit:

public void doWork() {
    Class<?> context = getMethodCallContext();
    if(context == InterfaceA.class) {
        doAsInterfaceA();
    }
    else if(context == InterfaceB.class) {
        doAsInterfaceB();
    }
    else {
        // Shenanigans and error handling
    }
}

Je ne prévois pas d'écrire un code qui tire parti de cette fonctionnalité pour le faire, les pue d'un anti-motif en attente de se produire, je veux seulement savoir si cela peut être fait, si oui, quelles langues le permettent?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top