2022년 10월 10일 월요일

Reflection으로 다른 메쏘드 실행(Kotlin)

Reflection으로 다른 메쏘드 실행(Kotlin)

Reflection 으로 다른클래스 메소드실행

class InvokeMethod(val className: String, val methodName: String) {  
  
/**  
 * 클래스 이름이 있다면 가져옴 */  
 fun getClassInfo(): Class<*>? {  
        return runCatching {  
  Class.forName(className);  
        }.getOrNull()  
    }  
  
 /**  
 * 메소드 이름이 있다면 가져옴 */  
 fun getMethodInfo(classInfo:Class<*>?, parameterTypes:Any?): Method? {  
        return runCatching {  
  parameterTypes?.let {  
  classInfo?.getMethod(methodName, parameterTypes as Class<*>?);  
            }?: run {  
  classInfo?.getMethod(methodName);  
            }  
 }.getOrNull()  
    }  
      
 /**  
 * 메소드 이름이 있다면 가져옴 */  
 fun getMethodFromObject(obj:Any?, methodName:String): Method? {  
        return runCatching {  
  obj?.javaClass?.getMethod(methodName)  
        }.getOrNull()  
    }  
  
    /**  
 * 메소드 실행 */  
 fun <T> invokeM(parameterTypes:Any?, vararg argParam:Any?): T? {  
        val method = getMethodInfo(getClassInfo(), parameterTypes)  
          
        return runCatching {  
            if (argParam.isEmpty()) {  
                method?.invoke(null) as T?  
            } else {  
                method?.invoke(argParam.first(), *argParam.drop(1).toTypedArray()) as T?  
            }  
        }.getOrNull()  
    }  
  
  
 /**  
 * 메소드 실행 */  
 fun <T> invokeFromMethod(method:Method?, vararg argParam:Any?): T? {  
        return runCatching {  
            if (argParam.isEmpty()) {  
                method?.invoke(null) as T?  
            } else {  
                method?.invoke(argParam.first(), *argParam.drop(1).toTypedArray()) as T?  
            }  
  
        }.getOrNull()  
    }  
}

Related Posts:

  • [日本語-漢字] 兼用 [日本語-漢字] 兼用 Sugoi Ebooks(Writen in English) Naver Cafe Sugoi Japanese Find a Job in Japan [日本語-漢字] 兼用 [日本語-漢字] 兼用 :けんよう 겸용 ボージャック・ホースマン.S01E08.JA-60-台所とトイレは ボージャック・ホースマン.S01E… Read More
  • [日本語-漢字] 兼任 [日本語-漢字] 兼任 Sugoi Ebooks(Writen in English) Naver Cafe Sugoi Japanese Find a Job in Japan [日本語-漢字] 兼任 [日本語-漢字] 兼任 :けんにん 겸임 A_LIFE~愛しき人~#05-825-桜坂中央病院の外科部長として A_LIFE~愛しき人~#05:826:… Read More
  • [日本語-漢字] 健忘症 [日本語-漢字] 健忘症 Sugoi Ebooks(Writen in English) Naver Cafe Sugoi Japanese Find a Job in Japan [日本語-漢字] 健忘症 [日本語-漢字] 健忘症 :けんぼうしょう 건망증 Dr.DMAT#09-493-硬膜下血腫の疑いがあります Dr.DMAT#09:494:外傷性健… Read More
  • [日本語-漢字] 兼業 [日本語-漢字] 兼業 Sugoi Ebooks(Writen in English) Naver Cafe Sugoi Japanese Find a Job in Japan [日本語-漢字] 兼業 [日本語-漢字] 兼業 :けんぎょう 겸업 BOSS2nd#05-110-(花形)片柳 沙織さん 40歳。→ BOSS2nd#05:111:兼業主婦で … Read More
  • [日本語-漢字] 剣道 [日本語-漢字] 剣道 Sugoi Ebooks(Writen in English) Naver Cafe Sugoi Japanese Find a Job in Japan [日本語-漢字] 剣道 [日本語-漢字] 剣道 :けんどう 검도 [UTW]Accel_World-01[h264-720p][F574698F].ass-283-Dialog… Read More

0 comments:

댓글 쓰기