scala - 将 isInstanceOf 类设置为变量
问题描述
鉴于扩展 MyAbstractClass 的 MyClass1 和 MyClass2,我需要实现一个逻辑,其中使用的类型isInstanceOf
是可变的(见myFunction
下文)。这可行吗?
abstract class MyAbstractClass {
val a: Int
val b: Int
}
class MyClass1 extends MyAbstractClass {
val c: String
}
class MyClass2 extends MyAbstractClass {
val d: Int
}
object HelloScala extends App {
def myFunction(indicator: Int) = {
val MyClass = if (indicator == 1) MyClass1 else MyClass2
if (someObject.isInstanceOf[MyClass])
// do something
else
// do something else
}
}
解决方案
我正在寻找在isInstanceOf括号之间的值中使用变量,例如我的问题中的变量MyClass是isInstanceOf使用的变量。我的问题中的代码无法编译,我正在寻找修复它。
您不能从字面上做到这一点,但您可以使用Class
Scala 提供的实际值classOf
及其isInstance
方法来实现:
val myClass = if (indicator == 1) classOf[MyClass1] else classOf[MyClass2]
if (myClass.isInstance(someObject)) ...
推荐阅读
- credit-card - 是否有允许上传 B2B 支付卡详细信息文件的服务?
- python - tkinter - 如何使用输入到 Entry 小部件中的文件路径作为变量?
- oracle - SQLDeveloper:连接节点从“连接”选项卡中消失
- reactjs - 如何重构 Redux-Toolkit、createAsyncThunk 和 extraReducers 中的重复代码?
- xml - 空手道框架根据条件建议填充 XML 列表
- git - git中的壁球提交
- amazon-web-services - 如何根据 Nuxt 的环境使用不同的 URL?
- c# - 如何在其他开发环境中应用 EF 迁移?
- reactjs - 使用下一个 js 运行反应应用程序时出错
- python-3.x - 使用 plt.fill_between 和 plt.subplot