Re: Any wayy to obtain Method in a save way?
Christian wrote:
I just came to ask my self if there is any safe way (check at compile
time if it not works) to get a method of a class.
Quite like the way one can do with ClassName.class get some class in
a safe way.
There are uses of class objects that do not require going into
reflective services--for example, maps with classes as keys. Having maps
with methods as keys is a lot less useful and is probably also a fair
amount less object-oriented.
There is also a question of syntax--it's possible to have two methods
keyPressed with different arguments, so how would you specify the
correct one without forcing the parser to go into long lookahead
contortions?
I think this might get the gui code a bit cleaner as it remove the
minimum handling code in a listener from the Design parts.
To me, it seems that for sufficiently complex GUIs, the better option is
to make more monolithic event listeners that are reused and possibly
delegate their actions to methods.
I know its a bit problematic.. as one can't reference a method just by
the name. Though I though if this was somehow possible in a checked way
it could make gui programming for my asthetics a bit more elegant.
Any reasonable syntax for unambiguously retrieving method objects would
be at most as elegant as generics and probably even less so (for reasons
of making a happy parser). Actual invocation of these methods is rather
ugly. You also run into a problem of delocalization of code, although
the other solution I mentioned shares this problem.
There are proposals out there for shortening the amount of code in
anonymous inner class creation expressions (specifically, the BGGA
full-blown closures proposal and the CICE counter-proposal). A little
off-topic, but the former of these proposals does involve some very ugly
behind-the-scenes magic to avoid having to introduce major changes to
the JVM spec (i.e., anything beyond the possible addition of a flag or
an attribute somewhere).
--
Beware of bugs in the above code; I have only proved it correct, not
tried it. -- Donald E. Knuth