2011-12-15 12 views
6

Supponiamo di disporre di un array di Object s (in particolare, un Object[]) e di un array di oggetti Constructor.Ricerca del codice Java che implementa l'algoritmo di risoluzione del sovraccarico di javac

Qualcuno può farmi riferimento ad un codice Java che può guardare attraverso gli oggetti Constructor e scegliere quello che è il più specifico rispetto ai tipi effettivi degli oggetti nel mio array. In altre parole, mi piacerebbe un'implementazione dell'algoritmo che javac utilizza per scegliere tra una serie di metodi sovraccaricati.

+1

1. Chi dice che è implementato in Java? 2. Perché non fare semplicemente riferimento [alla JLS] (http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.12.2)? –

risposta

2

È possibile cercare in un compilatore Java basato su Java (ho sentito che OpenJDK ne ha uno).

Penso che troverete che la risoluzione dei nomi è molto più complicata di quanto immaginiate, specialmente quando includete i generici e la cancellazione dei caratteri. Dubito che sarai in grado di "facilmente" sollevare questo codice e usarlo da solo.

La maggior parte degli strumenti Java che fanno qualcosa di semantico in profondità usano i file di classe, in cui sono stati eseguiti tutti i tipi di cancellazione e risoluzione, quindi possono evitare di sapere come fare. (Lo svantaggio di cercare solo nei file di classe è che quegli strumenti non possono modificare il codice sorgente).

+0

Non penso che i generici entrino in esso, dato che sono zucchero sintattico per "niente generici". –

Problemi correlati