Использование примитивных типов с ClassLoader

У меня есть фрагмент кода, который используется для преобразования строковых представлений, предоставленных Class.getCanonicalName(), в соответствующие экземпляры Class. Обычно это можно сделать с помощью ClassLoader.loadClass("className"). Однако он не работает с примитивными типами, выбрасывая ClassNotFoundException. Единственное решение, с которым я столкнулся, было примерно таким:

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);
}

Это кажется очень неприятным для меня, так есть ли какой-нибудь чистый подход к этому?

5
задан aRestless 1 July 2012 в 18:45
поделиться