例如,我看到了一个像这样的Scala表达式:
objX.methodY
似乎没有办法看到methodY
来自哪里,它可能来自:
(1)objX
的课程,让我们称之为ClassX
(2)超级objX
(ClassX
),我们称之为SuperClassX
(3)名为ClassZ
的班级ClassZ
与objX
无关,但隐式转换为ClassX
到ClassZ
。
因此methodY
的来源可能有三种可能性,是否有人有关于如何找出methodY
的定义的想法?
换句话说,在Scala中,如何在运行时检查方法的信息(特别是方法来自隐式转换)?
答案 0 :(得分:0)
有可能获得具有反射声明的方法的Class。你的命名:
objX.getClass().getMethod("methodY").getDeclaringClass();
答案 1 :(得分:0)
在运行时,代码将替换为convertToY(objX).methodY
之类的内容,因此在那时没有与objX连接进行检查,它只是一个函数参数。你想要完成什么?