猿问

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

一个界面如下所示:


public interface RunnableAction

{

    Optional<?> run(final Action action, final Context Context);

}

这个接口有很多不同的实现。


问题是:


一些操作需要返回一些数据,例如 ActionReadFromFile 但其中一些操作无缘无故地返回某些内容(在这种情况下我返回 Optional.empty()),例如 ActionCloseWindow。如何让它好一点?即在需要时返回,当没有任何有意义的东西可以或应该返回时不要返回任何东西。这应该通过消除“return Optional.empty()”或“.get()”之类的东西来使代码更清晰。


有什么建议或提示吗?


炎炎设计
浏览 225回答 2
2回答

陪伴而非守候

要么使用泛型,要么使用不Void返回任何内容的实现public interface RunnableAction<T>{&nbsp; &nbsp; T run(final Action action, final Context Context);}class Foo implements RunnableAction<Void>{&nbsp; &nbsp; public Void run(final Action action, final Context Context)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; //do something&nbsp; &nbsp; &nbsp; &nbsp; return null; // Void is not instantiable, so return null&nbsp; &nbsp; }}或有两种类型的操作:public interface CallableAction<T>{&nbsp; &nbsp; T run(final Action action, final Context Context);}public interface RunnableAction{&nbsp; &nbsp; void run(final Action action, final Context Context);}

慕哥6287543

我认为更好的解决方案是采用 C++ 风格 :D 不要返回值,而是传递一些值并让它在方法中改变。例如,通过收集所需的数据。在那次调用之后,集合是否为空:public interface RunnableAction<T>{&nbsp; &nbsp; void run(final Action action, final Context Context, Collection<T> pickedData);}
随时随地看视频慕课网APP

相关分类

Java
我要回答