Kel*_*ung 4 java generics autoboxing void
请注意如何Integer.TYPE和Integer.class都Class<Integer>,Double.TYPE并且Double.class都Class<Double>,并使用自动装箱如何向之间转换int和Integer以及double和Double.现在的问题是,这是否适用于真正void:Void.TYPE和Void.class都是Class<Void>,但你可以"转换"之间void和Void?
换句话说,假设你有这个界面:
public interface Foo<T> {
public T doSomething();
}
Run Code Online (Sandbox Code Playgroud)
实现一类Foo<Integer>是自由返回int其实施的doSomething()作为int将被装箱.同样Foo<Double>回归double.所以,对于a Foo<Void>:因为Void允许的唯一值是null(除非你做了奇怪的反思,这很少被证明是合理的),这是否意味着你可以省略强制性return null,有效地"装箱"了Void?
Jon*_*eet 11
这是否意味着你可以省略强制性返回null,有效地"装箱"虚空?
不.当然,这很容易为自己测试:
class Test {
public Void foo() {
}
}
Run Code Online (Sandbox Code Playgroud)
汇编给出:
Error: Test.java:3: missing return statement
}
Run Code Online (Sandbox Code Playgroud)
...或者您可以阅读自动装箱上的JLS(第5.1.7节),其中没有提到Void任何地方.
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |