当我研究Twitter Finatra
(v2.1.1)源时,我发现了一个非常奇怪的架构。他们将type
s 放入package object
s 中。请参阅以下示例:
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
// ...
}
我不明白这种奇怪设计的目的是什么。为什么我们需要像示例中那样创建类型别名(类型成员)?只是说该类已被弃用?