Java8 里 接口的静态方法有啥用?

2017-06-05 19:37:43 +08:00
 esolve

实现这个接口的类或者类实例不能调用这个静态函数 那这个静态函数有啥意义?

1483 次点击
所在节点    问与答
1 条回复
ewBuyVmLZMZE
2017-06-05 20:11:51 +08:00
類似 Scala 的 Trait,第一是函數式 Lambda 基本是基於 default 實現的。第二就是類似裝飾功能,增加方法,同時不用擔心菱形繼承。

```java
/**
* A common helper interface for easy handle retrofit request
* Inspired by scala's Trait design
*/
public interface RetrofitCallAdaptor {

/**
* Helper method to generate a real rest network request, use it as you wish
*
* @param retrofitCall the retrofit {@link Call} interface instance
* @param <T> the implicit type of response
* @return the converted response if request success, otherwise the {@link RetrofitRequestFailedException} would be thrown
*/
default <T> T execute(Call<T> retrofitCall) {
try {
Response<T> response = retrofitCall.execute();
if (response.isSuccessful()) {
return response.body();
}
ResponseBody errorBody = response.errorBody();
// Null would be present only if the request is successful. Add null check only to make sonar happy
throw new RetrofitRequestFailedException(errorBody == null ? "请求失败" : errorBody.string(), ErrorCode.NET_REQUEST_ERROR);
} catch (IOException e) {
throw new RetrofitRequestFailedException(e, ErrorCode.NET_REQUEST_SUSPEND);
}
}
}

```

比如我有一個方法,很多類都需要用,他們都有自己的特殊父類,不好擴展出一個抽象類。我又不想寫一個 Utils,那麼用接口就是最方便的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/366145

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX