【发布时间】:2013-07-06 17:20:17
【问题描述】:
这是我目前正在开发的 Http-Client 的简化版:
class Request[A]( val url: String, val event: Callbacks[A] )
{
def run: Try[A] = ...
}
case class Image( override val url: String, override val event: Callbacks[Bitmap] ) extends Request[Bitmap]
object GET
{
def apply[A <: Request[B] : ClassTag, B : ClassTag]( url: String, event: Callbacks[B] ): Try[B] =
{
classOf[A]
.runtimeClass
.getConstructor( classOf[String], classOf[Callbacks[B]] )
.newInstance( url, event )
.asInstanceOf[A]
.run
}
}
object Main extends App
{
GET[Image, Bitmap]( "http://...", null )
}
我想改进我的 API,使我可以像这样调用 GET:
GET[Image]( "http://...", null )
提供通用参数Image 应该意味着我正在使用Bitmap,因此我不想再次指定它。
【问题讨论】:
标签: scala generics reflection