I would like to get the Constructor of a nested class so that I can instantiate it. I want this to be an inner class so that I can access variables from its outer class.
The code below throws a NoSuchMethodException with the inner
prefix added:
package com.example
import android.util.Log
class ClassA {
var iWantToUseThisFromTheInnerClass = "someValue"
fun runThisToStart() {
val classB = ClassB(InnerClassA::class.java)
classB.doSomething()
}
inner class InnerClassA(text: String) {
init {
Log.d("ClassA", "Constructor invoked " + text)
}
}
}
package com.example
import java.lang.reflect.InvocationTargetException
class ClassB<T>(private var mModelClass: Class<T>) {
val someText = "whatever"
fun doSomething():T {
try {
val constructor = mModelClass.getConstructor(String::class.java)
return constructor.newInstance(someText)
} catch (e: NoSuchMethodException) { // Throws this exception
throw RuntimeException(e)
} catch (e: InvocationTargetException) {
throw RuntimeException(e)
} catch (e: InstantiationException) {
throw RuntimeException(e)
} catch (e: IllegalAccessException) {
throw RuntimeException(e)
}
}
}
Thanks
Aucun commentaire:
Enregistrer un commentaire