gpt4 book ai didi

java - 在 Java 中尝试/执行模式实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:56 26 4
gpt4 key购买 nike

我是 try/do(或 trier/doer)模式的粉丝,这种模式最好使用 out 参数在 C# 中实现,例如:

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 类中删除泛型并使用普通的旧 Object 和转换,或者为我将结束的类型创建一个新类使用(例如 StringTryResult)。

有没有更好的方法在 J2ME/Java 1.3 上实现这个模式?

最佳答案

您要实现的是一个 Maybe monad在函数式语言中。

有在 java 中执行此操作的实验,请参阅 herehere .

问题是,不幸的是,Java 的类型系统还不够先进,无法大规模支持它。此外,标准库不支持类似的东西,这减少了仅在您自己的代码中使用这种构造: (

参见 ScalaClojure对于支持此功能的语言。

就 Java ME 而言,我会三思而行是否为此而实现特殊类型。这在思想理论中很好,但是,它会使事情变得更加困难,例如。复制整个应用中的所有类型。

关于java - 在 Java 中尝试/执行模式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11085281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com