比如一个多参数类型的函数
public void a(String param){}
public void a(Int param){}
public void a(String[] param){}
….
然后调用的时候,函数传入参数的变量(param)类型未知,怎么可以去匹配执行 a 函数?
台湾网友:只要定义好三个方法。
public void a(String param){} //方法一
public void a(Int param){} //方法二
public void a(String[] param){} //方法三
调用的时候,他会自动去找的
a("字符串") ; //自己会去找方法一运行
a(2) ; //自己会去找方法二运行
a(["s","ss","sss"]) ; //自己会去找方法三运行
辽宁网友:
直接传进去就行了呀,
或用instanceof 判断一下参数类型。
宁夏网友:方法的重载嘛,自动匹配去调用。
浙江网友:a(Object param)
if (param instanceof Integer)
数字
if(param instanceof String)
字符串
if(param instanceof String[])
数组
福建网友:
直接传进去肯定是不行的。。
Object value = 1;
Object value = true;
Object value="2";
a(value) 这样明显通不过啊
福建网友:有什么方法自动匹配,难道是用 instanceOf 去一个个判断类型写一遍?
安徽网友:不然你以为捏,看看jsonobject.tobean();中的jsonconfig实现类,人家也是一个个转的,别想偷懒了,至少要一个强转
天津网友:感谢,有没有别的办法,这样不是要写很多行。。像 js 一样直接传
江西网友:9楼不是回答了,方法的重载。
安徽网友:9楼不是回答了,方法的重载。
福建网友:问这种问题的,多半是脚本型语言转过来的。
JAVA是强类型OO语言,入参严格对应方法的定义,只能传入对应的类型或其子类。
还有一种可能,叫泛型,就是<T>类型的,这个这里就没必要讨论了。
浙江网友:这显然是半道出家。。压根没学过JAVA的赶脚
台湾网友:感情从头看到尾我才看明白lz在问啥
以上信息转载自Hostloc。
未经允许不得转载:美国VPS_搬瓦工CN2 GIA VPS » 请求 java 大神支援