Java 如何用不同的参数类型实现一个方法?

Java 如何用不同的参数类型实现一个方法?,java,oop,Java,Oop,我应该实现四种方法来处理不同类型的一个特定目标。我找不到一个合乎逻辑的方法来实现它。在下面的代码中,我应该创建一个抽象和扩展关系,还是将它们放在一个类中并使用方法重写 我要管理的是,调用(参数)。在内部,应调用以下方法: 如果参数为字符串类型,则调用foo(字符串参数) 调用foo(映射参数)如果参数是映射类型 调用foo(Integer[]参数)如果参数是整数数组的类型这是一种简单的重载情况。只需填写方法体 void foo(String argument){ } void foo(Map

我应该实现四种方法来处理不同类型的一个特定目标。我找不到一个合乎逻辑的方法来实现它。在下面的代码中,我应该创建一个抽象和扩展关系,还是将它们放在一个类中并使用方法重写

我要管理的是,
调用(参数)
。在内部,应调用以下方法:

如果参数为字符串类型,则调用
foo(字符串参数)

调用
foo(映射参数)
如果参数是映射类型


调用
foo(Integer[]参数)
如果参数是整数数组的类型

这是一种简单的重载情况。只需填写方法体

void foo(String argument){
}

void foo(Map argument){
}

void foo(Integer[] argument){
}
还有像这样的电话

obj.foo( something );
将工作,这取决于三个参数类之一


(当然,这也适用于静态方法。)

这是一个简单的重载情况。只需填写方法体

void foo(String argument){
}

void foo(Map argument){
}

void foo(Integer[] argument){
}
还有像这样的电话

obj.foo( something );
将工作,这取决于三个参数类之一

(当然,这也适用于静态方法。)

若有一种检查参数类型的机制,比如IF type(argument)==String,那个么我将使用泛型方法

如果我理解你,那么是的——有

最后,所有这些都会分散你对手头问题的注意力——你可能只需要在from中使用as

若有一种检查参数类型的机制,比如IF type(argument)==String,那个么我将使用泛型方法

如果我理解你,那么是的——有



最后,所有这些都会分散您对当前问题的注意力-您可能应该只使用as in from。

您看过泛型吗?这就是您希望允许的所有类型吗?如果是这样,只需重载该方法。@SotiriosDelimanolis在调用(字符串参数)时,我正在执行与字符串相关的操作。若有一种检查参数类型的机制,比如
若类型(参数)==String
,我将使用泛型方法。Thanks@clcto不对于将来的任务,我将扩展到其他类型。对我来说,这听起来像是一个有问题的设计。也许你应该详细说明你想要对这些不同的对象做什么。你看过泛型吗?这就是你想要允许的所有类型吗?如果是这样,只需重载该方法。@SotiriosDelimanolis在调用(字符串参数)时,我正在执行与字符串相关的操作。若有一种检查参数类型的机制,比如
若类型(参数)==String
,我将使用泛型方法。Thanks@clcto不对于将来的任务,我将扩展到其他类型。对我来说,这听起来像是一个有问题的设计。也许你应该详细说明你想对这些不同的对象做什么。这是关于
类型(参数)==String
的问题的答案,但我真的建议使用@laune的答案,因为重载机制比比较类型更清晰。顺便说一句,我真的认为泛型在这里没什么可做的(你只是不使用它们的功能),你可以只使用
Object obj
@DmitryGinzburg Edited。更好?是的,现在肯定更好了。@DmitryGinzburg很棒。显然,当你需要使用未知类型(而不是四种已知类型)时,函数重载不起作用。这是关于
类型(参数)问题的答案==String
,但我真的建议@laune回答,因为重载机制比比较类型更清晰。顺便说一句,我真的认为,泛型在这里没什么用(你只是不使用它们的功能),您可以只使用
Object obj
@DmitryGinzburg Edited。更好?是的,现在肯定更好了。@DmitryGinzburg很棒。显然,当您需要使用未知类型(而不是四种已知类型)时,函数重载不起作用。