Java 自动装箱和作废

Java 自动装箱和作废,java,generics,void,autoboxing,Java,Generics,Void,Autoboxing,请注意Integer.TYPE和Integer.class都是class,Double.TYPE和Double.class都是class,以及如何使用自动装箱在int和Integer之间进行转换。问题是这是否适用于void:void.TYPE和void.class都是class,但是你能在void和void之间“转换”吗 换言之,假设您有以下接口: public interface Foo<T> { public T doSomething(); } 公共接口Foo{ 公共

请注意
Integer.TYPE
Integer.class
都是
class
Double.TYPE
Double.class
都是
class
,以及如何使用自动装箱在
int
Integer
之间进行转换。问题是这是否适用于
void
void.TYPE
void.class
都是
class
,但是你能在
void
void
之间“转换”吗

换言之,假设您有以下接口:

public interface Foo<T> {
    public T doSomething();
}
公共接口Foo{
公共T剂量测定法();
}
实现
Foo
的类在实现
doSomething()
时可以自由返回
int
,因为
int
将被装箱。类似地,对于
Foo
返回
double
。因此,对于
Foo
:由于
Void
的唯一允许值为null(除非您进行奇怪的反射,这很少是合理的),这是否意味着您可以省略必须的
返回null
,从而有效地“装箱”
Void

这是否意味着您可以省略强制返回null,从而有效地“装箱”无效

没有。当然,这很容易自己测试:

class Test {
    public Void foo() {
    }
}
汇编结果如下:

Error: Test.java:3: missing return statement
    }
。。。或者您可以在autoboxing()上阅读JLS,其中没有提到任何地方的
Void