java返回值void_返回⼀个Void对象
问题
当aVoidtype不是原语时,返回aVoidtype的正确⽅法是什么?例如。我⽬前使⽤null如下。
interface B{ E method(); }
class A implements B{
public Void method(){
// do something
return null;
}
}
#1 热门回答(107 赞)
Void类是⼀个不可实例化的占位符类,⽤于保存对表⽰Java关键字void的Class对象的引⽤。
所以以下任何⼀个都⾜够了:
使⽤Object参数化并返回新的Object()或null
使⽤Void进⾏参数化并返回null
使⽤你的NullObject进⾏参数化
你不能制作这个⽅法void,还有其他任何回报。由于忽略了某些东西,你可以返回任何东西。
#2 热门回答(9 赞)
Java 8引⼊了⼀个新类Optional,可以在这种情况下使⽤。要使⽤它,你需要稍微修改你的代码,如下所⽰:
interface B{ Optional method(); }
class A implements B{
public Optional method(){
// do something
pty();
}
}
这允许你确保从⽅法中获得⾮null返回值,即使没有任何返回值也是如此。当与检测时间null或⽆法返回的⼯具结合使⽤时,这⼀点尤为强⼤,例如: Eclipse@NonNull和@Nullable注释。
#3 热门回答(2 赞)
如果你不需要任何类型的东西,可以使⽤void。这可⽤于实现功能或操作。然后你可以做这样的事情:
interface Action {
public T execute();
}
abstract class VoidAction implements Action {
public Void execute() {
executeInternal();
return null;
}
abstract void executeInternal();
}
或者你可以省略抽象类,并在每个不需要返回值的操作中返回null。然后你可以使⽤这样的动作:
给定⼀种⽅法
private static T executeAction(Action action) {
ute();
}
你可以称之为
String result = executeAction(new Action() {
@Override
public String execute() {
//code here
return "Return me!";
}
});
或者,对于⽆效动作(请注意,你没有将结果分配给任何东西) executeAction(new VoidAction() {
@Override
public void executeInternal() {
//code here
抽象类的使用}
});

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。