我正在通过解释器进行一些动态的代码调用,而我正在进入JLS第15.12节中讨论的方法解决的粘性丑陋区域.
选择方法的"简单"方法是,当您知道所有参数的确切类型时,您可以使用该方法Class.getDeclaredMethod(String name, Class[] parameterTypes).也许您必须检查方法可访问性和类的超类/超级接口.
但这并不包括以下任何一种情况,所以它有点无用:
int但调用者传入的数字是a int或a double)(见下面的前三个快速示例)
所以现在我必须编写自己的方法解析库...
有没有任何着名的框架库来协助这个?
package com.example.test.reflect;
import java.lang.reflect.Method;
public class MethodResolutionTest {
public void compute(int i) { /* implementation... */ }
public void compute(Long l) { /* implementation... */ }
public void compute(Object obj) { /* implementation... */ }
public void compute(String... strings) { /* implementation... */ }
public static void main(String[] args) {
Class<?> cl = …Run Code Online (Sandbox Code Playgroud)