是否可以向方法发送任何类型的输入,并在对传递的类型进行操作时找到类型?
like
public methodName(int value){....}
而不是
public methodName(anyType anValue){....}
我正在使用java 8。
答案 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