Rob*_*ert 104 java generics return-value
返回Void类型的正确方法是什么,当它不是原始类型时?例如.我目前使用null如下.
interface B<E>{ E method(); }
class A implements B<Void>{
public Void method(){
// do something
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
Boz*_*zho 123
Void类是一个不可实例化的占位符类,用于保存对表示Java关键字void的Class对象的引用.
所以以下任何一个都足够了:
Object和返回new Object()或nullVoid和返回nullNullObject你的一个参数化你不能让这种方法void,和其他任何返回的东西.由于忽略了某些东西,你可以返回任何东西.
Eri*_*rom 13
Java 8引入了一个新类,Optional<T>可以在这种情况下使用.要使用它,您需要稍微修改您的代码,如下所示:
interface B<E>{ Optional<E> method(); }
class A implements B<Void>{
public Optional<Void> method(){
// do something
return Optional.empty();
}
}
Run Code Online (Sandbox Code Playgroud)
这允许您确保始终从方法中获得非null返回值,即使没有任何返回值也是如此.当与检测何时null可以或不可以返回的工具结合使用时,这尤其强大,例如Eclipse @NonNull和@Nullable注释.
| 归档时间: |
|
| 查看次数: |
86704 次 |
| 最近记录: |