2011-12-15 14 views
6

Załóżmy, że mam tablicę Object s (konkretnie, Object[]) i tablicę obiektów Konstruktora.Poszukuję kodu Java implementującego algorytm przeciążania javaca

Czy ktoś może polecić mi jakiś kod Java, który może przeglądać obiekty Konstruktora i wybrać ten, który jest najbardziej konkretny w odniesieniu do rzeczywistych typów obiektów w mojej tablicy. Innymi słowy, chciałbym wdrożyć algorytm, który używa javac do wyboru spośród zestawu przeciążonych metod.

+1

1. Kto powiedział, że jest zaimplementowany w Javie? 2. Dlaczego nie odwołać się [do JLS] (http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.12.2)? –

Odpowiedz

2

Można szukać w kompilatorze Javy opartym na języku Java (słyszę, że OpenJDK go ma).

Myślę, że przekonasz się, że rozwiązywanie nazw jest o wiele trudniejsze, niż sobie wyobrażasz, zwłaszcza gdy uwzględnisz generyczne i wymazanie typów. Wątpię, czy będziesz w stanie "łatwo" wyjąć ten kod i używać go samodzielnie.

Większość narzędzi Java, które wykonują cokolwiek semantycznie głęboko, używa plików klas, w których nastąpiło wymazanie i rozdzielczość wszystkich typów, dzięki czemu mogą uniknąć wiedzy o tym, jak to zrobić. (Minusem do szukania tylko w plikach klasowych jest to, że narzędzia nie mogą w ogóle modyfikować kodu źródłowego).

+0

Nie sądzę, że wchodzą w to leki generyczne, biorąc pod uwagę, że są one cukrem syntaktycznym dla "żadnych leków generycznych". –