在 baseFragment 中使用 T 将导致使用该函数需要“Nothing”而不是 Fragment

Using T in a baseFragment, will result in using that function to need a 'Nothing" instead of Fragment

这是我的方法:

abstract class BaseFragmentKey<T : Fragment> : Parcelable {
     fun newFragment(): T {
        val fragment = createFragment()
        val bundle = Bundle()
        bundle.putParcelable("KEY", this)
        fragment.arguments = bundle
        return fragment
    }

    protected abstract fun createFragment(): T

    @CallSuper
    open fun updateExistingFragment(fragment: T): T {
        return fragment
    }
}

但是当我尝试使用片段调用时:

   newFragment = newKey.updateExistingFragment(existingFragment)

它在编译之前说 Type mismatch. Required Nothing, found Fragment。如果我这样做 existingFragment as Nothing 它会崩溃,因为我无法转换为 null。

我该如何解决这个问题?

stateChange.getNewState<BaseFragmentKey<*>> 中的通配符问题。它应该是例如 stateChange.getNewState<BaseFragmentKey<Fragment>>