gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 19:40:47 24 4
gpt4 key购买 nike

我有一个 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
}

我想在没有 if/else 的情况下使用类似这样的东西来执行此操作;

Class<?> theClass = Class.forName(dataType);

问题是“theClass”仍然无法转换为 double 或 int。如果有任何想法,我将不胜感激。谢谢。

找到一个相关线程; Overloading in Java and multiple dispatch

最佳答案

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

调用哪个方法是在编译时决定的,也就是说,如果你想根据参数的类型调用不同的方法,你需要多次调用(即你需要 if 结构)。

换句话说,即使 doStuff2IntegerDouble 作为参数,它也不会工作(你的代码基本上和它得到了)。

(换句话说,这是因为 Java 具有单次分派(dispatch)。要模拟多分派(dispatch),您需要使用条件语句或访问者模式。 )

关于java - 使用 String 和方法重载创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10412041/

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