我在mybatis中使用scala:
Space.scala:
case class Space(
val id: Long ,
spaceName:String)
SpaceDao:
val space=Space(0,"space name")
val mapper = session.getMapper(classOf[SpaceMapper])
val result = mapper.insertSpace(space)
println(space.id)
结果空间id是mysql的自动增量数,不是0.但是space和space.id都是val,为什么val值可以改变?
答案 0 :(得分:3)
这可以通过reflection(由SetFieldInvoker使用)来实现:
反射通常被需要能力的程序使用 检查或修改在其中运行的应用程序的运行时行为 Java虚拟机。这是一个相对高级的功能,应该 只有掌握了基本面的开发人员才能使用 的语言。考虑到这一点,反思是一种强大的力量 技术,可以使应用程序执行哪些操作 否则将是不可能的。
另见question。