【发布时间】:2019-07-12 14:23:52
【问题描述】:
我想实现一个函数,它可以选择接受一个 Activity 类并重定向到它。如果没有提供类,将使用默认值。
在 Java 中我会这样做
public void onComplete(@Nullable Class<? extends Activity> redirectTarget) {
if (redirectTarget == null) redirectTarget = DefaultActivity.class;
ContextCompat.startActivity(context, new Intent(context, redirectTarget), null);
}
现在,我在 Kotlin 中尝试了以下操作:
fun <T : Activity> onComplete(redirectTarget: Class<in T> = DefaultActivity::class.java) {
ContextCompat.startActivity(context, Intent(context, redirectTarget), null)
}
我认为in T 会接受参数中 T 的任何子类,但在上面的示例中,我收到警告说
Type missmatch.
Expected: Class <in T>
Found: Class<DefaultActivity>
如何实现一个接受任何 Activity 类的函数?
【问题讨论】:
标签: generics kotlin covariance