2012-09-13 54 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