I went ahead and committed it. If we decide we don't like it, we can back it out, but I wanted to take care of it while I had the code open.
On Fri, Aug 6, 2010 at 6:44 PM, James Carman <ja...@carmanconsulting.com> 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 <ja...@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 >> <shekhargulat...@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-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org