[ 
https://issues.apache.org/jira/browse/COLLECTIONS-276?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12541740
 ] 

Brian Egge commented on COLLECTIONS-276:
----------------------------------------

I don't see any benefit to restricting a users choices.  Your preference might 
not be to use inheritance, but that shouldn't restrict others.  I find having a 
MyCompanyUtils class extend *Utils is quite useful.  I might add an additional 
overload to a method.  In Eclipse, it will show me all of the possible 
overloads of a method.  If I then choose one in the super class, I may go ahead 
and accept the auto-correct.  I might decide to add overloads which accept an 
array instead of a collection, and want to be able to view them side by side 
with the other static functions.

I have a StringUtils class which extends the commons.lang.StringUtils.  I 
generally create this in every project, and it grows as I add String related 
static functions.  

Making a class final might have had a performance improvement in Java 1.0, but 
in modern JVMs it has no affect.  I think the Open/Closed principle indicates 
that you should make your classes open for extension if possible.

> *Utils classes should not be extensible or able to be instantiated.
> -------------------------------------------------------------------
>
>                 Key: COLLECTIONS-276
>                 URL: https://issues.apache.org/jira/browse/COLLECTIONS-276
>             Project: Commons Collections
>          Issue Type: Improvement
>    Affects Versions: Generics
>            Reporter: Stephen Kestle
>            Priority: Minor
>             Fix For: Generics
>
>
> I don't see any good reason why this CollectionUtils (and others) isn't final 
> with a private constructor.  There are no non-static methods, and any 
> extension of them is going to have to call through to the super to avoid 
> compiler warnings.
> e.g. MyCollectionUtils.select() will provoke the warning that "static methods 
> should be called directly" (on CollectionUtils).
> Which would mean
> MyCollectionUtils{
> public static Collection select(){
>     return CollectionUtils.select();
> }
> Which really defeats the purpose.  In Java5, we have static imports now -  
> these provide more benefit than previous extension did anyhow.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to