gpt4 book ai didi

scala - 给定任何类类型的实例,如何找出它继承或实现的父类和/或特征?

转载 作者:行者123 更新时间:2023-12-04 03:02:08 27 4
gpt4 key购买 nike

假设有如下类/特征定义:

trait T1 {}
trait T2 {}
abstract class A{}

class B {}
class C extends A with T1 with T2 {}

val b = new B with T1
val c = new C

给定 b 和 c 的实例,我如何获取它们的继承信息(即知道 b 实现了 T1,而 c 实现了 A、T1 和 T2)?

谢谢你的帮助。

最佳答案

如果您不知道对象的类型(您有一些 AnyRef )并且只想测试它是否是某个类或特征的实例,那么您可以使用 isInstanceOf :

b.isInstanceOf[T2]

如果您想将其转换为该类型,请使用 asInstanceOf
b.asInstanceOf[T1]

另一方面,如果您不知道要搜索什么,那么您可以尝试使用 Java 反射。要获取已实现特征和接口(interface)的列表,请使用:
c.getClass.getInterfaces

要获得父类(super class)使用:
c.getClass.getSuperclass

关于scala - 给定任何类类型的实例,如何找出它继承或实现的父类和/或特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com