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

鍍金池/ 問答/ Scala問答
嫑吢丕 回答

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

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

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

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
  }
}

因為在Scala中,單例對象和伴生對象編譯完后會生成兩個class文件:Base.classBase$.class。Base$.class 類中有一個常量字段 MODULE$,它的類型就是當前類 Test$ 的類類型。

首頁 上一頁 1 2 3 下一頁 尾頁