使用String和方法重载创建对象

Mad*_*adz 5 java reflection overloading

我有一个String,可以是Double或Integer类型或其他类型.我首先需要创建一个Double或Integer对象,然后将其发送到重载方法.到目前为止,这是我的代码;

public void doStuff1(object obj, String dataType){

 if ("Double".equalsIgnoreCase(dataType)) {
        doStuff2(Double.valueOf(obj.toString()));
    } else if ("Integer".equalsIgnoreCase(dataType)) {
        doStuff2(Integer.valueOf(obj.toString()));
    }

 }

 public void doStuff2(double d1){
   //do some double related stuff here
 }

 public void doStuff2(int d1){
   //do some int related stuff here
 }
Run Code Online (Sandbox Code Playgroud)

我想在没有if/else的情况下这样做,就像这样;

Class<?> theClass = Class.forName(dataType);
Run Code Online (Sandbox Code Playgroud)

问题是'theClass'仍然无法转换为double或int.我会感激任何想法.谢谢.

找到一个相关的线程; 在Java中重载和多次调度

aio*_*obe 5

这不仅仅是处理原始类型的问题.

编译时决定调用哪个方法,也就是说,如果您希望能够根据参数的类型调用不同的方法,则需要多次调用(即需要if-construct).

换句话说,即使doStuff2采用IntegerDouble作为参数(你的代码基本上和它一样好),它也不会起作用.

(简而言之,这是因为Java具有单一调度.要模拟多个调度,您需要使用条件语句或访问者模式.)