[英]What is Java synonym for Kotlin "as"?
我有两个班级:
BaseViewModel extends ViewModel
NetworkViewModel extends BaseViewModel
在 Kotlin 中,我可以使用这种方法:
override fun selectViewModel(): Class<BaseViewModel> {
return NetworkViewModel::class.java as Class<BaseViewModel>
}
但是在 Java 中我不能这样做(不兼容的类型):
@Override
public Class<BaseViewModel> selectViewModel() {
return NetworkViewModel.class;
}
在 Kotlin 中我可以使用“as”,但是如何在 Java 中使用呢?
是的,@khelwood 是对的,应该是:
public abstract Class<? extends BaseViewModel> getViewModelClass();
然后我可以使用:
@Override
public Class<NetworkViewModel> getViewModelClass() {
return NetworkViewModel.class;
}
谢谢你。
请注意,在 Kotlin 中,您也不应该使用as
here ; 你的超类应该声明
abstract fun selectViewModel(): Class<out BaseViewModel>
其中Class<out BaseViewModel>
相当于 Java Class<? extends BaseViewModel>
Class<? extends BaseViewModel>
,然后
override fun selectViewModel() = NetworkViewModel::class.java
将工作。
如果您确实需要x as SomeType
,则相当于x as SomeType
是(SomeType) x
; 但在这种情况下,你可能需要双重演员
return (Class<BaseViewModel>) (Class<?>) NetworkViewModel.class;
因为 Java 编译器注意到Class<NetworkViewModel>
和Class<BaseViewModel>
不兼容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.