【发布时间】:2025-11-29 22:30:01
【问题描述】:
我有一个非常具体的场景,其中我有一些不同的抽象类,它们的子案例类可以有不同的参数,例如:
abstract class ball() {}
case class football(_name: String, _shape: String) extends ball
case class basketball(_name: String, _size: Int) extends ball
还有一个不同的抽象类:
abstract class food() {}
case class vegetarian(_name: String, calories: Int) extends food
case class meat(_name: String, proteinCount: Int) extends food
现在,我面临的问题是我需要在不知道它是什么类的情况下以某种方式提取所有这些类的名称,我只知道总是,每个类都有一个名为 _name 的参数。
假设我们有一个上述任何类的object,我正在尝试这样做:
object.getClass.getDeclaredField("_name").get(this)
但我得到了错误:
can not access a member of class package.food with modifiers "private"
我尝试将 val 和 var 放在类中的参数之前,但它没有帮助。我还尝试在 get(this) 之前的一行中执行“setAccessible(true)”,这也无济于事。
【问题讨论】: