java - Using primitive types with ClassLoader -


i've got piece of code used turn string representations delivered class.getcanonicalname() corresponding instances of class. can done using classloader.loadclass("classname"). however, fails on primitive types throwing classnotfoundexception. solution came across this:

private class<?> stringtoclass(string classname) throws classnotfoundexception {     if("int".equals(classname)) {         return int.class;     } else if("short".equals(classname)) {         return short.class;     } else if("long".equals(classname)) {         return long.class;     } else if("float".equals(classname)) {         return float.class;     } else if("double".equals(classname)) {         return double.class;     } else if("boolean".equals(classname)) {         return boolean.class;     }     return classloader.getsystemclassloader().loadclass(classname); } 

that seems very nasty me, there clean approach this?

since have exception this: class.forname(int.class.getname()), way go.

checking spring framework code http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/util/classutils.html class, method resolveprimitiveclassname , see same thing, map ;). source code: http://grepcode.com/file/repository.springsource.com/org.springframework/org.springframework.core/3.1.0/org/springframework/util/classutils.java#classutils.resolveprimitiveclassname%28java.lang.string%29

something this:

private static final map primitivetypenamemap = new hashmap(16); // , populate primitivetypenames.addall(arrays.aslist(new class[] {         boolean[].class, byte[].class, char[].class, double[].class,         float[].class, int[].class, long[].class, short[].class})); (iterator = primitivetypenames.iterator(); it.hasnext();) {     class primitiveclass = (class) it.next();     primitivetypenamemap.put(primitiveclass.getname(), primitiveclass); } 

Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -