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