0

当我研究Twitter Finatra(v2.1.1)源时,我发现了一个非常奇怪的架构。他们将types 放入package objects 中。请参阅以下示例:

package object marshalling {
  @deprecated("MessageBodyManager is an internal class. Use the HttpMockResponses trait to gain access to a testResponseBuilder", "")
  type MessageBodyManager = com.twitter.finatra.http.internal.marshalling.MessageBodyManager

  @deprecated("Use com.twitter.finatra.http.marshalling.DefaultMessageBodyReader", "")
  type DefaultMessageBodyReader = com.twitter.finatra.http.marshalling.DefaultMessageBodyReader

  // ...
}

或这个

package object filters {
  @deprecated("Use com.twitter.finatra.http.filters.AccessLoggingFilter", "")
  type AccessLoggingFilter = com.twitter.finatra.http.filters.AccessLoggingFilter[Request]

  @deprecated("Use com.twitter.finatra.http.filters.CommonFilters", "")
  type CommonFilters = com.twitter.finatra.http.filters.CommonFilters

  // ...
}

我不明白这种奇怪设计的目的是什么。为什么我们需要像示例中那样创建类型别名(类型成员)?只是说该类已被弃用?

4

1 回答 1

4

这是在重构提交中完成的。您可以在那里看到多个类已移至新包中,并添加了类型别名和弃用。例如,DefaultMessageBodyReader在这里,然后被转移到内部包中。在其原始位置留下了别名和弃用。

于 2015-12-27T23:29:41.803 回答