|
@@ -1,14 +1,39 @@
|
|
|
package com.winhc.bigdata.spark.utils
|
|
|
|
|
|
+import com.winhc.bigdata.spark.jobs.chance.CompanyChangeHandle
|
|
|
+import org.reflections.Reflections
|
|
|
+
|
|
|
+import scala.collection.JavaConverters._
|
|
|
+
|
|
|
/**
|
|
|
* @Author: XuJiakai
|
|
|
* @Date: 2020/7/27 17:01
|
|
|
* @Description:
|
|
|
*/
|
|
|
object ReflectUtils {
|
|
|
- def getClazz[T](clazzName: String, initargs: Any*): T = {
|
|
|
+ def getClazz[T](clazzName: String, initArgs: Any*): T = {
|
|
|
Class.forName(clazzName)
|
|
|
- .getConstructors.head.newInstance(initargs.asInstanceOf[Seq[Object]]: _*)
|
|
|
+ .getConstructors.head.newInstance(initArgs.asInstanceOf[Seq[Object]]: _*)
|
|
|
.asInstanceOf[T]
|
|
|
}
|
|
|
+
|
|
|
+ def subTraitClassName[T](underlying: Class[T], prefix: String): Seq[String] = {
|
|
|
+ val reflects = new Reflections(prefix)
|
|
|
+ reflects
|
|
|
+ .getSubTypesOf(underlying)
|
|
|
+ .asScala.map(_.getName).toSeq
|
|
|
+ }
|
|
|
+
|
|
|
+ def subObject[T](underlying: Class[T], prefix: String): Seq[T] = {
|
|
|
+ subTraitClassName(underlying, prefix).map(clazzName => {
|
|
|
+ Class.forName(clazzName)
|
|
|
+ .getConstructors.head.newInstance()
|
|
|
+ .asInstanceOf[T]
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ def main(args: Array[String]): Unit = {
|
|
|
+ val a = subTraitClassName[CompanyChangeHandle](classOf[CompanyChangeHandle], "com.winhc.bigdata.spark.jobs.chance")
|
|
|
+ println(a)
|
|
|
+ }
|
|
|
}
|