首页 > 编程语言 >Java9集合类中重载多个of方法原因

Java9集合类中重载多个of方法原因

时间:2022-11-24 18:05:22浏览次数:73  
标签:overloads 方法 collection varargs 重载 fixed Java9 类中


在java9 api的集合类中,有很多看似一样的重载of方法:

Java9集合类中重载多个of方法原因_ide


那这里有个问题是为什么有了VarArgs(可变长参数)方法,还需要定义那么多重载的方法呢?查看官方的更新日志中可以发现有如下描述:

​http://openjdk.java.net/jeps/269​

These will include varargs overloads, so that there is no fixed limit on the collection size. However, the collection instances so created may be tuned for smaller sizes. Special-case APIs (fixed-argument overloads) for up to ten of elements will be provided. While this introduces some clutter in the API, it avoids array allocation, initialization, and garbage collection overhead that is incurred by varargs calls. Significantly, the source code of the call site is the same regardless of whether a fixed-arg or varargs overload is called.

大致得意思是,虽然重载了这么多of方法会造成api的混乱,但它避免了varargs调用引起的数组分配,初始化和垃圾收集开销。因为固定参数的重载方法,返回的是一个immutable list(不可变集合)。


标签:overloads,方法,collection,varargs,重载,fixed,Java9,类中
From: https://blog.51cto.com/u_15890522/5884419

相关文章

  • java常用类中Calendar【日历】
    Calendar类Calendar:它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方......
  • 用汇编的眼光看C++(之算术符重载)
       算术符重载是类的有一个特性,但是每个人使用的方法不一样。用的好,则事半功倍;但是如果不正确的使用,则会后患无穷。   (1)简单算术符介绍   那什么是算术符重载......
  • C++语言运算符重载
     概念    在C语言中,运算符只能用于基本数据类型,例如,可以用==判断两个整数是否相等,但不能用于判断字符串是否相等,也不能用于判断结构体,也不能用于判断类。   ......
  • C++语言函数重载详解和示例
     C++函数重载的概念在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如把变量的值写入文件,变量的类型int、long、double、char,需要通过参数把变量......
  • C++学习笔记——类中的访问修饰符
    //#include<iostream>//usingnamespacestd;////classSecond//{////访问修饰符的作用,提高代码的安全性//private://私有成员,只被该类的内部所调用,类内若不写......
  • 无重载读入输出优化
    仅适用于整形的读入输出。namespaceFIO{staticcharbuf[1<<22],*s=buf;inlinechargc(){staticcharbuf[1<<22],*s=buf,*t=buf;returns......
  • 关于一个类可以同时实现单例和实例化调用其类中方法
    近期再写代码的过程中,发现好多大哥习惯于再调用dbhelp或者别的类库的时候,喜欢直接使用类库.方法名去调用,但是还有一些新手更喜欢去实例化调用,对于以上的两种写法,做了一个......
  • 110:特殊方法和运算符重载
    ###特殊方法和运算符重载Python的运算符实际上是通过调用对象的特殊方法实现的。比如:a=20b=30c=a+bd=a.__add__(b)print("c=",c)print("d=",d)输出结果:c......
  • 小新学Java9
    一、Object类1.1Object类的toString方法toStringpublicStringtoString()返回该对象的字符串表示。通常,toString方法会返回一个“以文本方式表示”此对象的字......
  • spring AOP只拦截某个类中某个方法
    参考链接:https://www.yiibai.com/spring/spring-aop-example-pointcut-advisor.htmlAdvice– 指示之前或方法执行后采取的行动。Pointcut– 指明哪些方法应该拦截,通过方......