2012-09-13 56 views
4

注意如何Integer.TYPEInteger.class都是Class<Integer>Double.TYPEDouble.class都是Class<Double>,并使用自动装箱如何向intInteger以及doubleDouble之间的相互转换。问题是void是否适用:Void.TYPEVoid.class都是Class<Void>,但是您可以在voidVoid之间“转换”吗?自动装箱和无效

为了把它以另一种方式,假设你有这样的接口:

public interface Foo<T> { 
    public T doSomething(); 
} 

实施Foo<Integer>类是自由地实施其doSomething()返回intint将被装箱。 Foo<Double>同样返回double。因此,对于Foo<Void>:由于允许的唯一值Void为空(除非您进行奇怪的反思,这很少合理),这是否意味着您可以省略强制性return null,有效地“装箱”Void

回答

10

这是否意味着你可以省略强制返回null,有效地“装箱”虚空?

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

class Test { 
    public Void foo() { 
    } 
} 

编纂得出:

Error: Test.java:3: missing return statement 
    } 

...或者你可以只读取JLS上自动装箱(section 5.1.7)没有提及任何地方Void