是否可以将任何类型的输入传递给方法并确定给出的输入类型?

时间:2016-03-16 05:22:19

标签: java variables declaration

是否可以向方法发送任何类型的输入,并在对传递的类型进行操作时找到类型?

like

public methodName(int value){....}

而不是

public methodName(anyType anValue){....}

我正在使用java 8。

4 个答案:

答案 0 :(得分:4)

" best"你能做的就是传递Object。然后你可以检查它以找出它是什么(除非是null,然后你就不知道应该是什么,如果那将是重要的。)

if (theObject instanceof String){
   // do something
} else if (theObject instanceof Number){
   // do something
}

但这有点击败强类型语言的目的,很少适合。

您也丢失了任何泛型类型信息(因为它在运行时被擦除,只能在编译时使用)。

作为替代方案,请考虑使用不同的参数类型提供方法的多个重载。

答案 1 :(得分:1)

是的,您可以使用Generic编程来做到这一点。查看here以获取有关如何在Java中使用泛型编程的更多信息。

答案 2 :(得分:1)

您可以使用通用方法,例如

public static <T> void exampleMethod(T obj) {
    System.out.printf("%s %s%n", obj.getClass().getName(), obj);
}

然后,您可以将任何Object类型传递给exampleMethod(或使用自动装箱的原语)。例如,

public static void main(String args[]) {
    exampleMethod("Hello");
    exampleMethod(123);
    exampleMethod(123.123f);
}

输出

java.lang.String Hello
java.lang.Integer 123
java.lang.Float 123.123

答案 3 :(得分:1)

可以利用instanceof

python3.4.pc