這裏改進的通用參數是HTTP客戶端的簡單化我目前工作:與反思
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
,因此我不想再指定它。