Java泛型歇斯底里

标签 java generics

有人帮我处理这些泛型!

如果您有一个可以作为参数的不同类型的重载方法,那么可以编写一种在运行时调用正确方法的通用方法吗? (抱歉,如果我的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/

相关文章:

Java 泛型在编译时没有问题

c# - 列出标志 Enum 中的所有位名称

java - Photoshop "Pucker Tool"算法

java - 避免服务器调用不存在的松散资源

java - 当我尝试使用切入点和通配符表达式创建 Bean 时,为什么会出现错误?

java - 安装 Cassandra 时出错 : NoClassDefFoundError RMIExporter

java - 创建bean并调用非setter方法

c# - 类型约束中的泛型

scala - Scala 中的子类型和类型参数

python - 泛型类的类方法