简书 阿贝
转载请注明原创出处,谢谢!
如果读完觉得有收获的话,欢迎点赞加关注
起因
最近工作也差不多确定下来了,打算好好阅读源码。于是遇到很久之前就想弄明白的问题——java对可变参数方法是如何实现的。
实现
先看看‘土’办法是怎么实现。
在调用方法之前我们首先还需要创建一个参数指定类型的局部变量。再传递到方法里面。
JDK1.5增加了新特性:可变参数
Class.class
仔细看看parameterTypes的类型其实是Class<?>[]。对,就是一个数组。于是乎,我就开始照样画葫芦。
注意一点:
其实上面也说明白了,这个可变参数必须放在所有参数的后面。
但是,两个多参数,能不能放在同一个方法里面呢?答案是不可以的,其实我们尝试的去创建一个这样的方法的时候,编译器自动会提示你
The variable argument type int of the method out must be the last parameter显然我们这样做是不可以的,同时也就是决定了一个方法只能有一个可变参数并且必须放置在参数列表的最后面。
这样的设计给我带来什么样的便处?
- 减少了参数的数量,看起来更加简洁。
- 适用于参数类型确定,但是,参数数量不确定的情况。
- 在一定程度上减少重载方法的数量。
网友评论