Domanda

È possibile che un metodo conosca il tipo di metodo che viene chiamato in? Quindi, ad esempio, nel codice PSUEDO orientato all'oggetto seguente:

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

C'è una lingua che lo consente doStuff() sapere che è stato chiamato come un Instance?

La domanda è sorta dal fatto che Java non fornisce alcun tipo di supporto per gli scontri del nome dell'interfaccia, ad esempio se si crea una classe che implementa le interfacce A e B che hanno entrambi una firma del metodo come void doWork() sarebbe possibile per il corpo di doWork() fare qualcosa di simile a quanto segue:

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 sfrutta questa funzione per farlo pure di un anti-pattern in attesa di accadere, voglio solo sapere se si può fare, in tal caso, in caso affermativo quali lingue lo consentono?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top