在Scala / Java中,如何检查定义方法的位置?

时间:2015-05-12 04:41:38

标签: java scala reflection inspect

例如,我看到了一个像这样的Scala表达式:

objX.methodY

似乎没有办法看到methodY来自哪里,它可能来自:

(1)objX的课程,让我们称之为ClassX

(2)超级objXClassX),我们称之为SuperClassX

(3)名为ClassZ的班级ClassZobjX无关,但隐式转换为ClassXClassZ

因此methodY的来源可能有三种可能性,是否有人有关于如何找出methodY的定义的想法?

换句话说,在Scala中,如何在运行时检查方法的信息(特别是方法来自隐式转换)?

2 个答案:

答案 0 :(得分:0)

有可能获得具有反射声明的方法的Class。你的命名:

objX.getClass().getMethod("methodY").getDeclaringClass();

答案 1 :(得分:0)

在运行时,代码将替换为convertToY(objX).methodY之类的内容,因此在那时没有与objX连接进行检查,它只是一个函数参数。你想要完成什么?