我正在编写一个java函数,该函数有两个参数:一个是string
类型而其他可以是array of String, Integer, Float, Double, Boolean
或者只是String
。
在JavaScript中,将任何数据作为参数传递都很容易,但是java中的优秀解决方案是什么?
答案 0 :(得分:2)
在java中,您只能传递方法定义的数据。解决这个问题的方法可以是使用Object作为参数。除此之外,您可以使用相同的名称创建许多方法,但接受不同的参数。 例如:
public void example(String str, Object obj){ /* code */ }
使用Object时,您需要确保检查它的类型,因此您最终不会尝试将整数用作字符串数组。
我很确定使用Object不是最好的方法,你应该使用不同参数的多个方法。
答案 1 :(得分:1)
您可以重载方法以接受不同的参数。
void doSomething(String x, int[] y) {}
void doSomething(String x, String[] y) {}
void doSomething(String x, String y) {}
这样,你仍然有类型安全性(Object
参数没有给你)。
答案 2 :(得分:0)
我想这就是你想要的
public void method1(String str,Object ... val)
在方法体内,您必须相应地处理不同的对象
答案 3 :(得分:0)
如果您希望第二个对象作为任何数据类型数组,您可以执行某些操作 像这样
public void _methodName(String arg1,Object[] arg2)
由于 String,Integer,Float,Boolean 都是从java.lang.Object
继承的,您只需将 Object[]
作为第二个参数传递并且您可以随意传递参数( String,Int,.... etc )。
答案 4 :(得分:0)
根据您的需要,方法的原型如下:
public void testMethod(String strVal, Object[] genericVal)
现在在body部分中,您必须使用Wrapper Classes将对象强制转换为所需的格式。
以上实施将解决问题。