Object...os 可变参数时,传数组问题

fzfei2 2014-11-15 01:51:41
void fnc( Object...os) {
print( os.length )
}

fnc( new Object[]{1,2} ),像这样传时,打出2,而不是2维数组,
有什么方法让它当有1个元素传进来
...全文
535 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
姜小白- 2014-11-15
  • 打赏
  • 举报
回复
Object类 是所有对象的基类,用Object 变量指向其子类对象就可以了。 Object obj = new Object[]{1,2}; fnc(obj); 用其他的修饰符,这个暂时还不清楚。
fzfei2 2014-11-15
  • 打赏
  • 举报
回复
我那只能用Object, java 里还有没有什么修饰符,其它写法什么的
姜小白- 2014-11-15
  • 打赏
  • 举报
回复
只传入非对象的数组时,像基本类型的数组时,它会把整个数组当做一个Object 实例,打印出的结果为 1 ,fnc(new int[3]); 如果传进的只是一个对象数组时,那么可变参数会把这个对象数组的长度打印出来eg: fnc(new Object[3]) 3
姜小白- 2014-11-15
  • 打赏
  • 举报
回复
只传一个new Object[]{1,2} 时,系统会把new Object[]{1,2}解析为os的数据,这样os的长度就是你的Object 数组的长度了 如果给传多个数组,或参数时,那么new Object[]{1,2} 就不再是 os ,而是os[0]了 或者 让一个object 变量指向数组,传变量进去,长度就精准了 Object obj = new Object[]{1,2}; fnc(obj);

67,513

社区成员

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

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