我尝试使用名为 Request.destroy_all
的FilterList
创建类似 Enumeration
的内容。
FilterType
应该有一个FilterList
元组列表,例如
(filterValue, ClassOfValue, FilterType)
这样做的主要原因是从以下内容中读取过滤器并将该过滤器写入JSON:
val listOfFilters: List[(String, ???, FilterType)] = List(
("fromDate", String, DateFilter),
("toDate", String, DateFilter),
("id", Long, IdFilter)
)
问题是我没有找到替换(__ \ filterName).read[ClassOfValue]
的方法,我甚至不知道Scala中是否可以。
修改
Intellij IDEA 建议我将其指定为???
,但感觉不应该有Object
引用:
Class
答案 0 :(得分:3)
除了为每种类型的ClassOfValue
创建枚举值之外,您还可以创建一个Filter
类,它将ClassOfValue
作为类型参数。然后,此过滤器类将处理其自己的JSON输入/输出。它看起来像这样:
import scala.reflect.runtime.universe.{TypeTag, typeOf}
object FilterType extends Enumeration
{
type FilterType = Value
val DateFilter, IdFilter = Value
}
import FilterType._
case class Filter[A](filterValue: String, filterType: FilterType)(implicit tt: TypeTag[A])
{
def myTypeParam: Unit = println(s"My Type Param is ${typeOf[A]}")
def applyFilter(data: A): A = ???
}
val l: List[Filter[_]] = List(Filter[String]("fromDate", DateFilter),
Filter[String]("toDate", DateFilter), Filter[Long]("id", IdFilter))
l.foreach(_.myTypeParam)
/*
Output:
My Type Param is String
My Type Param is String
My Type Param is Long
*/
因此,在applyFilter
方法中,您会有类似<LOOKUP FILTER VALUE>.read[A]
然后<FILTERED DATA>.write[A]
的内容。