È possibile che un metodo conosca il tipo di metodo in cui è chiamato? Così, ad esempio, nel seguente codice psuedo orientato agli oggetti:
Instance io = new InstanceSubclass();
io.doStuff();
Esiste un linguaggio che consente a doStuff()
di sapere che è stato chiamato come Instance
?
La domanda è nata dal fatto che Java non fornisce alcun tipo di supporto per le interferenze dei nomi di interfaccia, ad esempio se si crea una classe che implementa le interfacce A e B che hanno entrambe una firma del metodo come void doWork()
essere possibile per il corpo di doWork()
di fare qualcosa di simile al seguente:
public void doWork() {
Class<?> context = getMethodCallContext();
if(context == InterfaceA.class) {
doAsInterfaceA();
}
else if(context == InterfaceB.class) {
doAsInterfaceB();
}
else {
// Shenanigans and error handling
}
}
Non ho intenzione di scrivere alcun codice che sfrutti questa caratteristica in modo da farlo trasudare un anti-pattern in attesa di accadere, voglio solo sapere se può essere fatto, in caso affermativo quali lingue lo consentono?