gpt4 book ai didi

java - 如何限制泛型类型不扩展类?

转载 作者:行者123 更新时间:2023-12-01 04:42:18 26 4
gpt4 key购买 nike

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

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 的实例因此该方法将是一个实例方法。否则,用户可以传递 Class<B>调用静态方法。

但是,编译器提示它们不明确。我认为解决方案之一是强制 B在第一个重载中不是 Class<?> 的实例。我怎样才能这样做呢?

更新

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

最佳答案

抱歉,这是一个错误。问题是 findMethod 不知道 null 的类型是什么。因此修复如下:

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

我不知道天气是否人们可以做我在标题中描述的事情,但在我的例子中这是不必要的。

关于java - 如何限制泛型类型不扩展类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16331689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com