我写一个Java函数,其采用两个参数:一个是string
类型和其他可以是array of String, Integer, Float, Double, Boolean
或只是一个String
。传递整型或字符串数组作为参数在Java
在JavaScript中,很容易将任何数据作为参数传递,但java中有什么好的解决方案?
我写一个Java函数,其采用两个参数:一个是string
类型和其他可以是array of String, Integer, Float, Double, Boolean
或只是一个String
。传递整型或字符串数组作为参数在Java
在JavaScript中,很容易将任何数据作为参数传递,但java中有什么好的解决方案?
您可以重载该方法以接受不同的参数。
void doSomething(String x, int[] y) {}
void doSomething(String x, String[] y) {}
void doSomething(String x, String y) {}
这样的话,你仍然有类型安全(其中Object
参数不给你)。
这将如何优于泛型?考虑到Java对泛型代码使用强类型检查。 –
@ b1nary.atr0phy:不确定你的意思。你会如何在这里使用泛型? – Thilo
我想这是你想要的
公共无效方法1(字符串str,对象... VAL)
方法体里面,你将不得不处理不同的对象相应
在java只能传递方法中定义的数据。解决这个问题的方法可以是使用Object作为参数。除此之外,您可以创建许多具有相同名称的方法,但接受不同的参数。 例子:
public void example(String str, Object obj){ /* code */ }
使用时您需要确保检查它是什么类型的对象,所以你最终不会试图用一个整数作为字符串数组。
我很确定使用Object不是最好的方法,你应该使用不同参数的多个方法。
这是一个非常不好的习惯,因为它违反了类型安全。 –
当你想要第二个对象作为任何数据类型的数组,你可以做一些事情 这样
public void _methodName(String arg1,Object[] arg2)
由于字符串,整数,浮点数,布尔所有从java.lang.Object
继承,你可以简单地通过Object[]
作为第二个参数和你通过参数(字符串,诠释,....等),无论你想要的。
方法的原型,按您的需求如下:
public void testMethod(String strVal, Object[] genericVal)
现在你必须要通过使用包装类对象铸造成需要的格式的正文部分。
以上实施将解决该问题。
使用[泛型]的威力(https://docs.oracle.com/javase/tutorial/java/generics/) – halex
这是很糟糕的面向对象的设计,它有处理多种数据类型的方法。你打算如何处理数据?您可以考虑您感兴趣的属性并将Interface作为参数传递给您。 – Nikolai
我们需要看到更多的代码才能给出好的建议。通常情况下,你可以避免这样做。没有更多的上下文,我会说看看“方法重载”(像System.out.println这样做)。但是,再次,没有更多的背景,任何建议只是在黑暗中的危险镜头。 – Thilo