有人帮我处理这些泛型!
如果您有一个可以作为参数的不同类型的重载方法,那么可以编写一种在运行时调用正确方法的通用方法吗? (抱歉,如果我的java知识很差,如果是的话)
示例:
public interface CoolInterface {
setOverloadedValue(String o);
setOverloadedValue(Integer o);
setOverloadedValue(Date o);
}
public interface ClazzProvider {
Class getClazz();
}
public class SomeUncoolClass {
@AutowiredMagic CoolInterface coolGuy;
@AutowiredMagic ClazzProvider clazzyProvider;
public void helpMeMethod() {
coolGuy.setOverloadedValue(getValue(clazzyProvider.getClazz()));
}
private ??? getValue(???) {
return ???;
}
}
getValue() 的方法签名是什么?我该如何实现它?
最佳答案
否 - 重载是在编译时选择的,编译器无法判断您要使用哪个重载。
您可能想查看 Visitor Pattern作为您想要接受的类型在您的控制之下的情况的解决方法 - 当您想要接受 String/Date/Object 时,它没有多大帮助:(
关于Java泛型歇斯底里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2325715/