2015-07-20 2 views
1

Я миграции проекта Java 7 для Java 8. Существует метод, который делает что-то вроде этого:TypeMirror пустота не является PrimitiveType так Явы 8

if(type instanceof PrimitiveType){ 
    PrimiriveType type = (Primitivetype) type; 
    ... 
} 

В Java 7 Тип ничтожной является экземпляр PrimitiveType, но поскольку Java 8 это изменилось.

Почему это изменилось? и что такое интерфейс, который определяет типы void в java 8?

Заранее спасибо, Juan

+6

[Похоже, что 'void' поддерживается в.] (Http://docs.oracle.com/javase/7/docs/api/javax/lang/model/type/PrimitiveType.html) –

+0

Я не вижу, что он изменен void поддерживается либо –

+1

Если вы используете 'instanceof', вы узнаете, реализует ли класс реализации конкретный« интерфейс », который является только деталью реализации. Если вы не хотите оценивать детали реализации, используйте API, то есть 'type.getKind(). IsPrimitive()' ... – Holger

ответ

3

void Тип представлен javax.lang.model.type.NoType. Но даже в Java 7, PrimitiveType включает в себя только boolean, byte, short, int, long, char, float и double.

+0

спасибо manouti, я понимаю, что это единственные типы, которые покрывают PrimitiveType, но в java 7 оператор 'type instanceof PrimitiveType' по-прежнему возвращает true, когда тип недействителен. Мне кажется странным. –

0

Вы должны использовать javax.lang.model.type.NoType в соответствии с документами как для java 7, так и для java 8.

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