为了账号安全,请及时绑定邮箱和手机立即绑定

方法有时应返回值有时不返回。如何重构它?

方法有时应返回值有时不返回。如何重构它?

炎炎设计 2021-09-15 15:27:44
一个界面如下所示:public interface RunnableAction{    Optional<?> run(final Action action, final Context Context);}这个接口有很多不同的实现。问题是:一些操作需要返回一些数据,例如 ActionReadFromFile 但其中一些操作无缘无故地返回某些内容(在这种情况下我返回 Optional.empty()),例如 ActionCloseWindow。如何让它好一点?即在需要时返回,当没有任何有意义的东西可以或应该返回时不要返回任何东西。这应该通过消除“return Optional.empty()”或“.get()”之类的东西来使代码更清晰。有什么建议或提示吗?
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

要么使用泛型,要么使用不Void返回任何内容的实现


public interface RunnableAction<T>

{

    T run(final Action action, final Context Context);

}


class Foo implements RunnableAction<Void>

{

    public Void run(final Action action, final Context Context)

    {

        //do something


        return null; // Void is not instantiable, so return null

    }

}

或有两种类型的操作:


public interface CallableAction<T>

{

    T run(final Action action, final Context Context);

}


public interface RunnableAction

{

    void run(final Action action, final Context Context);

}


查看完整回答
反对 回复 2021-09-15
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

我认为更好的解决方案是采用 C++ 风格 :D 不要返回值,而是传递一些值并让它在方法中改变。例如,通过收集所需的数据。在那次调用之后,集合是否为空:


public interface RunnableAction<T>

{

    void run(final Action action, final Context Context, Collection<T> pickedData);

}


查看完整回答
反对 回复 2021-09-15
  • 2 回答
  • 0 关注
  • 224 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信