这是我目前正在处理的 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
应该意味着我正在使用 a Bitmap
,因此我不想再次指定它。