作者sbrhsieh (sbr)
看板java
标题Re: [分享] 原来 Void 可以这样用
时间Thu Mar 12 21:58:52 2009
※ 引述《macbuntu (邀怪)》之铭言:
: interface A {
: public Object visit(Node f);
: }
: class B implements A {
: @Override
: public Void visit(Node f) {
: ...
: return null; // 任何不是 null 的 return 值都是 compile time error
: }
: }
: 在我的状况, A 是一个由 code generator 产生的 visitor interface, 不能改,
: 我 implement 它时有些 method 不该 return 任何东西, 但因为 method 的内容很长
: 且 return 的点不只一个, 不小心会忘记, 而 interface 的关系我又不能用小 void,
: 这时候大 Void 就变得很有用了. 如果我弄错了 return 不是 null 的东西,
我觉得这个理由有点牵强,如果你实作 interface 里某个 method,而你的实作永远
要 return null,你可以很简单地(不靠较深的 engineering/tool)先宣告一个 local
variable:
public Object visit(Node f) {
final Object ret = null;
if (...) { // some shortcut
...
return ret;
}
// normal condition
...
...
return ret;
}
或者是
public Object visit(Nodef) {
visitImpl(Node f);
return null;
}
private void visitImpl(Node f) {
// your implementation here
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.130.21
※ 编辑: sbrhsieh 来自: 218.173.130.21 (03/12 21:59)