2010-08-02 2 views
3

Есть ли простой способ определить, имеет ли класс, например Integer или Long, примитивный тип? (например, int и long соответственно)Проверка, имеет ли класс связанный примитивный тип

И просто я не имею в виду что-то вроде поддержания коллекции классов и проверки того, живет ли этот класс в коллекции.

+0

Пожалуйста, изучите этот вопрос..http: //stackoverflow.com/questions/709961/determining-if-an-object-is-of-primitive-type –

ответ

3

И легко, я не имею в виду что-то вроде поддержания коллекции классов и проверки того, живет ли этот класс в коллекции.

Но это легко. Java имеет фиксированное число примитивных типов (7, если я их помню), и каждый из них соответствует точно одному классу. Очень быстро и легко проверить принадлежность к массиву из 7 элементов, или вы можете поместить их в Set и использовать их для проверки членства в O (1) времени. Я не уверен, что будет быстрее.

Если вы спрашиваете, поддерживает ли Java встроенный метод (в стандартном API), я так не думаю. Но если бы он был один, он, вероятно, просто проверил бы принадлежность к этому набору или массиву из 7 элементов.

+0

Я не думал, что существует другой способ. И да, я знаю, что поддерживать коллекцию легко, но мне просто интересно, был ли предварительно определенный класс, который поддерживал этот набор для меня. Делает для более чистого кода. Но если нет, я просто займусь сохранением собственной коллекции. Благодарю. – digiarnie

0

Да, есть легко путь:

public class ClassUtils { 
    private static final Set<Class<?>> wrapperClasses = new HashSet<Class<?>>(); 
    static { 
     wrapperClasses.add(Integer.class); 
     ... there are a set number of wrapper classes - add them all here 
    } 

затем, создать вспомогательный метод:

public static boolean isWrapperForPrimitive(Class<?> klass) { 
     return wrapperClasses.contains(klass); 
    } 
} 

Реверс очень легко, Class.isPrimitive():

Определяет, является ли указанный объект класса примитивным.

Существует девять предопределенных объектов класса для представления восьми примитивных типов и пустот. Они создаются виртуальной машиной Java и имеют те же имена, что и примитивные типы, которые они представляют, а именно: boolean, byte, char, short, int, long, float и double.

Доступ к этим объектам можно получить только с помощью следующих общедоступных статических конечных переменных и являющихся единственными объектами класса, для которых этот метод возвращает true.

+1

Это тот метод, который, по его словам, он не хочет делать : p – hhafez

Смежные вопросы