一个数组类型的参数的通用性问题

ptma 2009-11-26 02:57:32
现有一个方法:
public static void methodA(Object[] params){
...
}


如果我这样用:
long[] pl = ...
int[] pi = ...

那么 methodA(pl) 或 methodA(pi) 会语法报错的

----------

所以:我怎样写 methodA 的参数才可以 让 methodA 接受 long[] 或 int[] 或 String[] 及其他类型的数组
...全文
145 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbwhwang 2009-11-26
  • 打赏
  • 举报
回复
讲解一下为什么 Object[] 与 int[]不一样
在java里面,数据只有2种存在模式:对象(Object)和基础数据类型(Primitive data type)
而基础数据类型的数组也是对象,也就是说 int[]是一个对象
而Object[]是对象的数组
很显然 一个对象≠对象数组
hbwhwang 2009-11-26
  • 打赏
  • 举报
回复
对象和基本数据类型是不一样的。
你看看JDK自己的做法就知道了,你这种情况,JDK是这样做的:
定义
method(Object[] param)
method(int[] param)
method(long[] param)
method(double[] param)
....
你去看看 java.util.Arrays这个类的源代码
ptma 2009-11-26
  • 打赏
  • 举报
回复
我晕

就是不想写重载方法, 也不想用 methodA(Object params) 才来问的
道光2008 2009-11-26
  • 打赏
  • 举报
回复
我晕啦
你的参数是object[] 对象数组
long[] pl = ...
int[] pi = ...
是基本数据类型的数组?
明显不匹配。
Integer【】
String[]
即可
dope2002 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 rm35458526 的回复:]
当然不行了,int,long是基本数据类型,Object是所有类型的父类。你在建立int,long数组要用类来建立,Long[] pi =null; Integer[] pl=null;
[/Quote]

方法要求参数是对象数组。但long[] 和int[]是基本类型数组。可以将基本类型打包,即:
int[] -> Integer[]
long[] -> Long[]
再作为参数传入。
darxin 2009-11-26
  • 打赏
  • 举报
回复
第一种方式:利用重载技术
public static void methodA(Object[] params) {
}
public static void mathodA(long[] params) {
}
public static void methodA(double[] params) {
}
将所有的基本类型各写一个重载方式,这个方法比较麻烦。

第二种方式:利用commons-lang库
int[] pi = ...
Integer[] objPi = ArrayUtils.toObject(pi);
methodA(objPi);
zl3450341 2009-11-26
  • 打赏
  • 举报
回复
public static void methodA(Object params) {
methodA(pi);
}

static int[] pi = ...
rm35458526 2009-11-26
  • 打赏
  • 举报
回复
当然不行了,int,long是基本数据类型,Object是所有类型的父类。你在建立int,long数组要用类来建立,Long[] pi =null; Integer[] pl=null;
mg6521018 2009-11-26
  • 打赏
  • 举报
回复
学习了
swandragon 2009-11-26
  • 打赏
  • 举报
回复
public static void methodA(Object params){
...
}

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧