我是try / do(或trier / doer)模式的粉丝,最好在C#中使用out
参数来实现,例如:
DateTime date;
if (DateTime.TryParse("2012-06-18", out date))
{
//Do something with date
}
我目前正在Java 1.5项目中,正在使用一个名为TryResult的新类来实现try / do模式,该类从实现try / do模式的所有方法中返回:
public class TryResult<ResultType> {
private boolean mSuccess = false;
private ResultType mResult = null;
public TryResult(boolean success, ResultType result) {
super();
this.mSuccess = success;
this.mResult = result;
}
public boolean isSuccess() {
return mSuccess;
}
public ResultType getResult() {
return mResult;
}
}
这很好用,但是我会将这段代码移植到使用J2ME的其他平台上,因此无法使用泛型。
我当前的选择是从TryResult
上面的类中删除泛型并使用普通的old Object
和cast,或者为最终要使用的类型创建新的类(例如StringTryResult
)。
有没有更好的方法在J2ME / Java 1.3上实现此模式?
您尝试实现的功能在功能语言中称为Maybe monad。
问题是,不幸的是,Java的类型系统不够先进,无法大规模支持。.而且,标准库不支持类似的东西,这将这种构造的使用仅减少到您自己的代码中:(
就Java ME而言,仅出于此目的,我会三思而后行地实现特殊类型。这在思想理论上很好,但是,这会使事情变得更加困难。复制整个应用中的所有类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句