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

标签 java java-me design-patterns

我是 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/

相关文章:

java - Poi ' charactered 似乎是自动添加的

JavaFx - 交互式排序应用程序

android - XML 解析不适​​用于 lwuit 应用程序的 android 构建

audio - J2ME 不播放通知声音

Android:如何实现 "distributed control"

c++ - 如何让多个类共享指向一个公共(public)类的指针

java - 以编程方式填充 JVM 永久代 (PermGen) 内存区域

java - RXJava2中几种方法的组合

java - j2me - 比较 2 个日期

c# - 我真的应该抽象一切吗