Scala如何判断Handle特质类型的函数入参是否存在name属性
IDEA 调试 Scala 项目时判断入参是否包含name属性的条件断点设置方案
你当前的继承结构下,name属性统一定义在抽象类F中,所有携带name字段的Handle实现类都必然是F的子类,不需要用反射做字段存在性校验,直接基于运行时类型判断即可,操作步骤如下:
- 在
final函数目标代码行点击左侧栏,先添加普通行断点 - 右键点击断点的红色标记,调出断点配置面板,找到
Condition(条件)输入框 - 在输入框中填入断点触发条件,按需选择写法即可:
- 只要入参带
name属性就触发断点,直接填类型判断语句:
传入的h.isInstanceOf[F]h是B类实例时该表达式返回true,断点命中;传入C类实例时返回false,断点不会暂停。
2. 如果需要匹配特定name值才触发断点,可以用模式匹配写法:h match { case f: F => f.name == "你需要匹配的目标name值" case _ => false } - 只要入参带
- 确认条件填写无误后点击
Done保存配置,以Debug模式启动项目即可生效。
注意:不要尝试用类反射遍历字段判断name是否存在,这种写法在JVM类型擦除场景下稳定性差,而且性能远低于直接做类型判断,完全适配你当前的类继承设计。
内容的提问来源于stack exchange,提问作者Self-Motivated Wu
相关产品推荐
相关产品推荐

