4

注意Integer.TYPEand Integer.classare both和are both Class<Integer>,以及如何使用自动装箱在and 和 and之间进行转换。问题是这是否适用于: and are both ,但是你能在and之间“转换”吗?Double.TYPEDouble.classClass<Double>intIntegerdoubleDoublevoidVoid.TYPEVoid.classClass<Void>voidVoid

换句话说,假设你有这个接口:

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

一个类实现可以自由地在其实现中Foo<Integer>返回一个,因为它将被装箱。对于返回也是如此。所以,对于 a : 因为permissible 的唯一值是 null (除非你做了奇怪的反射,这很少是合理的),这是否意味着你可以省略强制性的,有效地“装箱” ?intdoSomething()intFoo<Double>doubleFoo<Void>Voidreturn nullVoid

4

1 回答 1

11

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

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

class Test {
    public Void foo() {
    }
}

编译给出:

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

...或者您可以阅读关于自动装箱的 JLS(第 5.1.7 节),它没有Void在任何地方提及。

于 2012-09-13T05:30:16.527 回答