Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自Java8以来,TypeMirror void不是一个基本类型_Java_Java 8_Primitive Types - Fatal编程技术网

自Java8以来,TypeMirror void不是一个基本类型

自Java8以来,TypeMirror void不是一个基本类型,java,java-8,primitive-types,Java,Java 8,Primitive Types,我正在将一个Java7项目迁移到Java8。 有一种方法是这样做的: if(type instanceof PrimitiveType){ PrimiriveType type = (Primitivetype) type; ... } 在Java7中,void类型是PrimitiveType的一个实例,但自从Java8以来,它已经改变了 为什么会发生变化?在Java8中定义void类型的接口是什么 提前感谢,Juan类型用表示。但即使在Java 7中,也只包括布尔,字节,短,in

我正在将一个Java7项目迁移到Java8。 有一种方法是这样做的:

if(type instanceof PrimitiveType){
   PrimiriveType type = (Primitivetype) type;
   ...
}
在Java7中,void类型是PrimitiveType的一个实例,但自从Java8以来,它已经改变了

为什么会发生变化?在Java8中定义void类型的接口是什么


提前感谢,Juan

类型用表示。但即使在Java 7中,也只包括
布尔
字节
int
字符
浮点
,和
double

您应该根据和的文档使用
javax.lang.model.type.NoType

如果您使用
instanceof
,我看不出它会被更改,您将了解实现类是否碰巧实现了一个特定的
接口
,它只是一个实现细节。如果您不想评估实现细节,请使用API,即
type.getKind().isPrimitive()
…您完全正确,我现在正在这样做,但没有isNoType()方法,因此我以一堆instace of:/where's note()方法结束。如果你看一下,你会发现只有三种可能的类型,
VOID
PACKAGE
,和
NONE
,它们在大多数上下文中都是可变的。例如,唯一可以显示为方法返回类型的
NoType
VOID
,因此简单的
type.getKind()==TypeKind.VOID
就足够了。类似地,唯一可以显示为超类的
NoType
NONE
,等等。由于
TypeKind
是一个
enum
,您可以使用
switch
而不是一堆
sthanks manouti的
实例,我知道这些是原语类型所覆盖的唯一类型,但是在Java7中,当type为void时,PrimitiveType的语句
type instanceof
仍然返回true。我觉得很奇怪。