------------------------
 [EMAIL PROTECTED] wrote:
------------------------
        
>Tom Klaasen wrote:
>> Berin wrote:
>>  
>> 
>>>>We need a way to invoke the recycle() method in the current implementations,
>>>>so a support for Recyclable is required.
>>>
>>>:)  I can do that without requiring that interface!  I will use the
>>>reflection facilities to determine if there is a "recycle()" method
>>>with public access, and then call it.  I will probably get that done
>>>within the next couple of days.
>> 
>> 
>> I hope you're joking. In case you're not: 
>> http://java.sun.com/docs/books/effective/toc.html , item 35.
>> 
>> Right now, I'm refactoring someone else's code who also liked reflection-wizardry. 
>It's a bitch.
>
>You will never see the reflection "wizardry", and it is done in a way
>that is called for.  The biggest thing is that I need to get Fortress
>to support Recyclable.recycle() without any access to the interface--it
>is in a package that has slow pools, and is unnecessary in the grand
>scheme of things.  The Pool itself will perform the checks.
>
>//....
>private final static Class[] EMPTY = new Class[] {};
>
>public void release( Object obj )
>{
>    try
>    {
>        Class objClass = obj.getClass();
>        Method meth = objClass.getMethod( "recycle", EMPTY );
>
>        if( Modifiers.isPublic( meth.getModifiers() ) )
>        {
>            meth.invoke( obj, EMPTY );
>        }
>    }
>    catch (Exception e)
>    {
>        // it is not recyclable
>    }
>
>    m_available.add( obj );
>}
>
>It's not that bad--not that pretty either.  However it allows us to
>handle the Recyclable issues well.  Otherwise I have to use reflection
>to determine if it implements
>"org.apache.avalon.excalibur.pool.Recyclable". 


You'd use instanceof, not reflection.


> What happens if I have
>something similar in another framework?


Another quick&dirty hack?


>> Just my opinion. We've got such a nice framework right now, with lots of good 
>design patterns incorporated, and I would hate to see it wasted in this way.
>
>How is an isolated incident of properly applied reflection a waste?


Reflection always seems "appropriate", but in most cases the guy who codes it just 
thinks it's cool. I have fallen into this trap myself, and I have seen others falling 
into it also.

If, however, you still think this is the way to go, who am I to stop you. Just 
consider me the sign saying "steep ravine ahead". If you're skilled enough to descend 
that ravine, by all means go ahead and do it. And a sign doesn't have any knowledge of 
the reasons why you want to descend that ravine, and nor do I.

But I'll repeat my sig ;-)


tomK
(String)"".getClass().getConstructor(new Class[] {"".getClass()}).newInstance(new 
Object[]{"Reflection is cool"});



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to