例如,我看到了这样的Scala表达式:
objX.methodY
似乎无法看到
methodY
的来源,它可能来自:(1)
objX
的类,我们称它为ClassX
(2)
objX
的超类(ClassX
),我们称它为SuperClassX
(3)名为
ClassZ
的类,ClassZ
与objX
无关,但是存在从ClassX
到ClassZ
的隐式转换。因此
methodY
的来源可能存在三种可能性,有人是否有关于如何找出methodY
定义位置的想法?换句话说,在Scala中,如何在运行时检查方法的信息(尤其是该方法来自隐式转换)?
最佳答案
有可能获得具有通过反射声明的方法的Class。用你的名字:
objX.getClass().getMethod("methodY").getDeclaringClass();