[QUOTE=cmrudolph]Ich glaube, das was du vorhast ist noch eine Nummer komplexer. Ich habe die JLS (explizit auch den von dir verlinkten Abschnitt) nicht komplett gelesen. Was der Compiler aber macht, ist doch nur zu prüfen, ob ein Ausdruck gültig ist. Du möchtest die möglichen Kandidaten bestimmen.
[/quote]
Ich habe das auch noch nicht alles gelesen und nachvollzogen. Aber die Vermutung, die du da andeutest („Prüfen, ob X passt“ vs. „Ausgeben, was alles passen würde“) hatte ich auch schon… Zuerst hatte ich (für das eigentliche Projekt) auch die Guava Type Tokens verwendet ( http://code.google.com/p/guava-libraries/wiki/ReflectionExplained ) : Die bieten schon viel von der Funktionalität, die ich brauchte: Assignability mit Typparametern, Resolven passender Typen etc. Aber die können erstmal nur zur Compilezeit erstellt werden, und hatten nicht zuletzt deswegen einige Einschränkungen, die mich dazu veranlasst haben, zumindest mal zu versuchen, das ganze selbst anzugehen. (Viel von dem, was ich bisher gemacht habe, ist ziemlich analog zu dem, was auch von den TypeTokens gemacht wird, aber … an manchen Stellen geht es schon etwas darüber hinaus, und an anderen Stellen wird es hoffentlich noch deutlich darüber hinausgehen).
Dass das ganze ziemlich komplziert ist, schwant mir auch schon eine Weile. Bezüglich der „Vervollständigung“: Sicher gibt es da Algorithmen dafür. (Ansatzweise wird das ja schon von Eclipse erledigt, z.B. wenn man eine Variable verwendet, die es nicht gibt, und man ihm dann sagt: ‚Generate local Variable‘ oder so). Aber es gibt da eben nicht nur „einen“ Algorithmus, der in 10 Zeilen Pseudocode beschrieben und in 50 Zeilen Java-Code nachimplementiert ist. Da steckt ziemlich viel Theorie dahinter. Meine „Liste, der Dokumente, die ich mal lesen müßte“ wird immer länger. Und wenn ich sowas sehe wie das schon in diesem Beitrag erwähnte, wird nochmal das offensichtlicher, was mir eigentlich schon klar ist: Da stecken 50 Jahre Forschung und wissenschaftliche Ergebnisse drin, die auf einer theoretischen Basis stehen, die ich mir in der Praxis unmöglich „mal kurz nebenbei“ erarbeiten kann.
Selbst die vergleichsweise elementarsten Papers (oder auch schon Landei’s Link) lehren mich diesbezüglich eine Form von Demut, die schon seit hunderten von Jahren nicht mehr praktiziert wurde
(Naja, vielleicht doch: Die Zitate vom Anfang von http://www.artima.com/weblogs/viewpost.jsp?thread=222021 beruhigen mich da doch immer wieder ein bißchen
). Es wäre sicher hilfreich, wenn man sich bei sowas schonmal mit Haskell oder so beschäftigt hätte (das wird praktisch überall für die ~„Simple Examples“ verwendet - und für mich sind es eben nur Hieroglyphen
), aber vielleicht schaffe ich es zumindest, mich so weit da reinzufräsen, dass da eine praktische Lib rauskommt.
Wär’ ja langweilig, wenn man immer nur Sachen machen würde, die man schon kann 