检查javax.lang.model.type.TypeMirror是一种基本类型

时间:2016-08-31 20:14:57

标签: java types primitive

有什么方法可以检查javax.lang.model.type.TypeMirror是原始类型吗?我已经尝试了instanceof PrimitiveType,但由于PrimitiveType扩展了TypeMirror,因此总是产生真的。

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

如果您有TypeMirror个对象,则可以使用TypeKind方法获取此类型(getKind()),然后使用isPrimitive()方法。

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

答案 1 :(得分:1)

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

  

基于TypeMirror对象的类实现操作,   要么使用访问者,要么使用getKind()方法的结果。运用   instanceof不一定是确定的可靠成语   此建模层次结构中的对象的有效类,因为   实现可以选择让单个对象实现多个   TypeMirror子接口。

尝试拨打getKind()而不是instanceOf

答案 2 :(得分:1)

有两个选项:

检查它是否是原始的

typeMirror.getKind().isPrimitive()

或使用访问者执行操作(如果它是PrimitiveType

的实例)
typeMirror.accept(new SimpleTypeVisitor6<P, R>() {
    @Override R visitPrimitive(PrimitiveType t, P p) {
      //do something with primitive type t
    }
}, null);