在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/ Scala問(wèn)答
嫑吢丕 回答

flatMap需要一個(gè)實(shí)現(xiàn)了一交遍歷接口的類(lèi)型或返回這個(gè)類(lèi)型的函數(shù),_.split("")返回的是list, list也實(shí)現(xiàn)了TraversableOnce,所以類(lèi)型是匹配的。

final def flatMap[B](f: (A) ? GenTraversableOnce[B]): List[B]
孤影 回答

這里需要用到反射機(jī)制:使用 Java 類(lèi)庫(kù) reflections 里的 getSubTypesOf 獲取所有子類(lèi),但想獲得其對(duì)應(yīng)的對(duì)象需要通過(guò) getField 獲得 MODULE$ 字段,根據(jù)該字段就可以獲得對(duì)應(yīng)的對(duì)象。

package com.gcusky.util.reflect

import org.reflections.Reflections
import scala.collection.JavaConverters._

object Base {
  def subObject[T](underlying: Class[T]): Seq[T] = {
    val reflects = new Reflections("com.gcusky.util.reflect")
    reflects.getSubTypesOf(underlying).asScala.map { sub =>
      sub.getField("MODULE$").get(null).asInstanceOf[T]
    }.toSeq
  }
}

因?yàn)樵赟cala中,單例對(duì)象和伴生對(duì)象編譯完后會(huì)生成兩個(gè)class文件:Base.classBase$.class。Base$.class 類(lèi)中有一個(gè)常量字段 MODULE$,它的類(lèi)型就是當(dāng)前類(lèi) Test$ 的類(lèi)類(lèi)型。

首頁(yè) 上一頁(yè) 1 2 3 下一頁(yè) 尾頁(yè)