2016-08-31 5 views
2

Есть ли способ проверить, что javax.lang.model.type.TypeMirror является примитивным типом? Я пробовал instanceof PrimitiveType, но это всегда верно, поскольку PrimitiveType расширяет TypeMirror.Проверьте javax.lang.model.type.TypeMirror является примитивным типом

Благодарим за помощь.

+1

вы пытались посмотреть на 'TypeMirror.getKind()'? –

ответ

1

Пер https://docs.oracle.com/javase/7/docs/api/javax/lang/model/type/TypeMirror.html

Для реализации операций на основе класса объекта TypeMirror, либо использовать посетитель или использовать результат метода getKind(). Использование instanceof не обязательно является надежной идиомой для определения эффективного класса объекта в этой иерархии моделирования, так как реализация может решить, что один объект реализует множественные подтексты TypeMirror.

Попробуйте позвонить по номеру getKind() вместо instanceOf.

+0

Спасибо, я не заметил эту часть! – Aurasphere

3

Если у вас есть TypeMirror объект, вы можете получить вид этого типа (TypeKind) с помощью метода getKind(), а затем использовать метод isPrimitive().

if(typeMirror.getKind().isPrimitive()){ 
    //It's a primitive type 
} 
1

Есть 2 варианта:

Чтобы проверить, если это примитивный вид

typeMirror.getKind().isPrimitive() 

или использовать посетитель, чтобы выполнить действие, если он является экземпляром PrimitiveType

typeMirror.accept(new SimpleTypeVisitor6<P, R>() { 
    @Override R visitPrimitive(PrimitiveType t, P p) { 
     //do something with primitive type t 
    } 
}, null); 
Смежные вопросы