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中重载和多次调度
这不仅仅是处理原始类型的问题.
在编译时决定调用哪个方法,也就是说,如果您希望能够根据参数的类型调用不同的方法,则需要多次调用(即需要if-construct).
换句话说,即使doStuff2采用Integer和Double作为参数(你的代码基本上和它一样好),它也不会起作用.
(简而言之,这是因为Java具有单一调度.要模拟多个调度,您需要使用条件语句或访问者模式.)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |