1

这些是在 Java 中创建“委托”的简单方法:

public static <B> Runnable runnableOf(B o, String methodName) {
    return findMethod(methodName, o.getClass(), o);
}
public static <B> Runnable runnableOf(Class<B> base, String methodName) {
    return findMethod(methodName, base, null);
}

这段代码有两种情况:当B(要调用的方法的类)不是Class<?>时,用户应该传递一个实例,B因此该方法将是一个实例方法。否则,用户可以通过 aClass<B>来调用静态方法。

但是,编译器抱怨它们模棱两可。我认为解决方案之一是强制B第一个重载不是Class<?>. 我该怎么做?

更新

上述代码的解决方案在我自己的回答中给出。但是,它没有回答标题中的问题。我希望任何人都可以回答它并给出另一个有意义的例子。

4

1 回答 1

0

对不起,这是一个错误。问题是findMethod不知道是什么类型的null。所以修复如下:

public static <B> Runnable runnableOf(Class<B> base, String methodName) {
    return findMethod(methodName, base, (B)null);
}

我不知道天气或者人们不能做我在标题中描述的事情,但是在我的例子中它不是必需的。

于 2013-05-02T06:36:21.740 回答