|
@@ -1,6 +1,6 @@
|
|
|
package com.winhc.bigdata.spark.utils
|
|
|
|
|
|
-import com.winhc.bigdata.spark.jobs.chance.CompanyChangeHandle
|
|
|
+import com.winhc.bigdata.spark.ng.dynamic.NgCompanyDynamicHandle
|
|
|
import org.reflections.Reflections
|
|
|
|
|
|
import java.lang.reflect.Modifier
|
|
@@ -13,9 +13,15 @@ import scala.collection.JavaConverters._
|
|
|
*/
|
|
|
object ReflectUtils {
|
|
|
def getClazz[T](clazzName: String, initArgs: Any*): T = {
|
|
|
- Class.forName(clazzName)
|
|
|
- .getConstructors.head.newInstance(initArgs.asInstanceOf[Seq[Object]]: _*)
|
|
|
- .asInstanceOf[T]
|
|
|
+ if (initArgs == null || initArgs.isEmpty) {
|
|
|
+ Class.forName(clazzName)
|
|
|
+ .getConstructors.head.newInstance()
|
|
|
+ .asInstanceOf[T]
|
|
|
+ } else {
|
|
|
+ Class.forName(clazzName)
|
|
|
+ .getConstructors.head.newInstance(initArgs.asInstanceOf[Seq[Object]]: _*)
|
|
|
+ .asInstanceOf[T]
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
def subTraitClassName[T](underlying: Class[T], prefix: String): Seq[String] = {
|
|
@@ -23,21 +29,21 @@ object ReflectUtils {
|
|
|
reflects
|
|
|
.getSubTypesOf(underlying)
|
|
|
.asScala
|
|
|
- .filter(r=> !Modifier.isAbstract(r.getModifiers))
|
|
|
+ .filter(r => !Modifier.isAbstract(r.getModifiers))
|
|
|
.map(_.getName)
|
|
|
.toSeq
|
|
|
}
|
|
|
|
|
|
- def subObject[T](underlying: Class[T], prefix: String): Seq[T] = {
|
|
|
+ def subObject[T](underlying: Class[T], prefix: String, initArgs: Any*): Seq[T] = {
|
|
|
subTraitClassName(underlying, prefix).map(clazzName => {
|
|
|
- Class.forName(clazzName)
|
|
|
- .getConstructors.head.newInstance()
|
|
|
- .asInstanceOf[T]
|
|
|
+ getClazz[T](clazzName, initArgs: _*)
|
|
|
})
|
|
|
}
|
|
|
|
|
|
def main(args: Array[String]): Unit = {
|
|
|
- val a = subTraitClassName[CompanyChangeHandle](classOf[CompanyChangeHandle], "com.winhc.bigdata.spark.jobs.chance")
|
|
|
- println(a)
|
|
|
+ val handle = getClazz[NgCompanyDynamicHandle]("com.winhc.bigdata.spark.ng.dynamic.handle.company_land_transfer", true)
|
|
|
+ println(handle)
|
|
|
+ // val a = subTraitClassName[CompanyChangeHandle](classOf[CompanyChangeHandle], "com.winhc.bigdata.spark.jobs.chance")
|
|
|
+ // println(a)
|
|
|
}
|
|
|
}
|