commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Carman <ja...@carmanconsulting.com>
Subject Re: [lang] : Question on Usage of Generics
Date Fri, 06 Aug 2010 23:04:21 GMT
It's in there.  Enjoy!

On Fri, Aug 6, 2010 at 6:55 PM, Sujit Pal <sujit.pal@comcast.net> wrote:
> fwiw, this approach would be nicer... I frequently use ArrayUtils.toMap
> to set maps with different key and value types statically from data.
>
> -sujit
>
> On Fri, 2010-08-06 at 18:44 -0400, James Carman wrote:
>> For instance, this would work:
>>
>> Map<String, Color> map = toMap(new Object[][] {
>>                 {"red", Color.red},
>>                 {"black", Color.black}
>>         });
>>
>>
>> On Fri, Aug 6, 2010 at 6:41 PM, James Carman <james@carmanconsulting.com> wrote:
>> > What if we change it to:
>> >
>> > public static <K,V> Map<K, V> toMap(Object[] array)
>> >
>> > Then, you can use type inference so you don't have to do any casting!
>> >
>> > On Fri, Aug 6, 2010 at 4:54 PM, Shekhar Gulati
>> > <shekhargulati84@gmail.com> wrote:
>> >> Hello,
>> >>
>> >> I have started playing with latest beta release of Commons-Lang 3.0  and
I
>> >> have question on usage of generics in Commons-lang
>> >>
>> >> For example, there is a method called toMap in ArrayUtils which could have
>> >> been easily generified but isn't
>> >>
>> >> In Commons-Lang 3.0
>> >>
>> >> public static Map<Object, Object> toMap(Object[] array) {
>> >>        if (array == null) {
>> >>            return null;
>> >>        }
>> >>        final Map<Object, Object> map = new HashMap<Object,
Object>((int)
>> >> (array.length * 1.5));
>> >>        for (int i = 0; i < array.length; i++) {
>> >>            Object object = array[i];
>> >>            if (object instanceof Map.Entry<?, ?>) {
>> >>                Map.Entry<?,?> entry = (Map.Entry<?,?>)
object;
>> >>                map.put(entry.getKey(), entry.getValue());
>> >>            } else if (object instanceof Object[]) {
>> >>                Object[] entry = (Object[]) object;
>> >>                if (entry.length < 2) {
>> >>                    throw new IllegalArgumentException("Array element
" + i
>> >> + ", '"
>> >>                        + object
>> >>                        + "', has a length less than 2");
>> >>                }
>> >>                map.put(entry[0], entry[1]);
>> >>            } else {
>> >>                throw new IllegalArgumentException("Array element
" + i + ",
>> >> '"
>> >>                        + object
>> >>                        + "', is neither of type Map.Entry nor
an Array");
>> >>            }
>> >>        }
>> >>        return map;
>> >>    }
>> >>
>> >>
>> >>
>> >> Fully Generified version of toMap method
>> >>
>> >> public static <T> Map<T, T> toMap(T[][] array) {
>> >> if (array == null) {
>> >> return null;
>> >> }
>> >> final Map<T, T> map = new HashMap<T, T>((int) (array.length
* 1.5));
>> >> for (int i = 0; i < array.length; i++) {
>> >> T[] t = array[i];
>> >> if (t[i] instanceof Map.Entry) {
>> >> @SuppressWarnings("unchecked")
>> >> Map.Entry<T, T> entry = (Map.Entry<T, T>) t[i];
>> >> map.put(entry.getKey(), entry.getValue());
>> >> } else if (t instanceof Object[]) {
>> >> T[] entry = t;
>> >> if (entry.length < 2) {
>> >> throw new IllegalArgumentException("Array element " + i
>> >> + ", '" + t + "', has a length less than 2");
>> >> }
>> >> map.put(entry[0], entry[1]);
>> >> } else {
>> >> throw new IllegalArgumentException("Array element " + i + ", '"
>> >> + t + "', is neither of type Map.Entry nor an Array");
>> >> }
>> >> }
>> >> return map;
>> >> }
>> >>
>> >> I just thought to ask the Commons-Lang team.. Are there any reason why some
>> >> methods are not generified?
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >> Thanks
>> >> Shekhar
>> >> 09873937317
>> >>
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>> For additional commands, e-mail: dev-help@commons.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message