feat: 优化反射效率

This commit is contained in:
Quyunshuo
2020-09-26 18:12:48 +08:00
parent 0dcc3bf105
commit 6e186de3a8
4 changed files with 4 additions and 4 deletions

View File

@ -23,7 +23,7 @@ abstract class BaseFrameActivity<VB : ViewBinding, VM : ViewModel> :
protected val mBinding: VB by lazy(mode = LazyThreadSafetyMode.NONE) {
val vbClass: Class<VB> =
(javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<VB>
val inflate = vbClass.getMethod("inflate", LayoutInflater::class.java)
val inflate = vbClass.getDeclaredMethod("inflate", LayoutInflater::class.java)
inflate.invoke(null, layoutInflater) as VB
}

View File

@ -25,7 +25,7 @@ abstract class BaseFrameFragment<VB : ViewBinding, VM : ViewModel> :
protected val mBinding: VB by lazy(mode = LazyThreadSafetyMode.NONE) {
val vbClass: Class<VB> =
(javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<VB>
val inflate = vbClass.getMethod("inflate", LayoutInflater::class.java)
val inflate = vbClass.getDeclaredMethod("inflate", LayoutInflater::class.java)
inflate.invoke(null, layoutInflater) as VB
}
protected val mViewModel: VM by lazy(mode = LazyThreadSafetyMode.NONE) {

View File

@ -20,7 +20,7 @@ abstract class BaseFrameNotMVVMActivity<VB : ViewBinding> : AppCompatActivity()
protected val mBinding: VB by lazy(mode = LazyThreadSafetyMode.NONE) {
val vbClass: Class<VB> =
(javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<VB>
val inflate = vbClass.getMethod("inflate", LayoutInflater::class.java)
val inflate = vbClass.getDeclaredMethod("inflate", LayoutInflater::class.java)
inflate.invoke(null, layoutInflater) as VB
}

View File

@ -22,7 +22,7 @@ abstract class BaseFrameNotMVVMFragment<VB : ViewBinding> : Fragment() {
protected val mBinding: VB by lazy(mode = LazyThreadSafetyMode.NONE) {
val vbClass: Class<VB> =
(javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<VB>
val inflate = vbClass.getMethod("inflate", LayoutInflater::class.java)
val inflate = vbClass.getDeclaredMethod("inflate", LayoutInflater::class.java)
inflate.invoke(null, layoutInflater) as VB
}