`
lxiaodao
  • 浏览: 121542 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

EffectiveJava-第42条 慎用可变参数

阅读更多
(1)可变参数允许你传多个参数或者0个,有时侯会造成困惑
 static int sum(int... args) {       
        int sum = 0;
        for (int arg : args)
            sum += arg;
        return sum;
    }
 System.out.println(sum());
 System.out.println(sum(10));

有时侯,我们是应该明确编写需要1个或者多个参数的方法,而不适0个。
如果你不小心,写了这样的多个方法
 static int sum(int... args) {       
        int sum = 0;
        for (int arg : args)
            sum += arg;
        return sum;
    }
    static int sum(int arg0,int... args){
        int sum = arg0;
        for (int arg : args)
            sum += arg;
        return sum;
    }

System.out.println(sum(2));调用sum方法的时候,会发生什么情况呢?请你试一试,留下更深的印象。
(2)这条告诉我们大家一段可能不知道的历史,通过以下代码展示
public static void main(String[] args)
{
		
       int [] arr={1,2,3,4,5,6,7,8,9,10};		
       System.out.println(Arrays.asList(arr));		
       System.out.println(Arrays.toString(arr));
		
}

运行后,在我的机器上打印结果:
[[I@18a992f]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Java1.5以前上述代码是不能编译通过的,大于等于1.5的版本编译通过,但是打印的结果[[I@18a992f]实际上不是我们想要的,是“错误”的。为什么呢?
作者告诉我们是由于可变参数引起的:
  
public static <T> List<T> asList(T... a) {
	return new ArrayList<T>(a);
    }

它把数组arr装入List后变成List<int[]>了,实际上我们需要的是List<Integer>。

综上,实用可变参数确实要小心一些。
分享到:
评论

相关推荐

    EffectiveJava:有效的 Java 示例

    《EffectiveJava》是Java开发领域的经典著作,由Joshua Bloch撰写,提供了许多关于如何编写高效、可维护和设计良好的Java代码的实用建议。这本书的第2版在原有的基础上进行了更新,以适应Java语言的新发展。现在,...

    [] - 2022-08-06 慎用BeanUtils,性能真的拉跨!.pdf

    互联网资讯,技术简介,IT、AI技术,人工智能

    java大作业-聊天室,有待完善,慎用

    JavaFX是Java平台上的一个强大的用户界面工具包,用于创建...但是,由于标题中提到“有待完善,慎用”,说明这个项目可能还在开发阶段,可能存在一些未解决的问题,因此在使用时需要谨慎,可能需要进一步完善和调试。

    java源码总结-Effective-Java-3E:有效Java第三版的源代码示例和摘要的回购

    《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,现在已经更新到第三版。这本书汇集了众多编程最佳实践,旨在帮助开发者写出更高效、更可维护的Java代码。以下是对《Effective Java》第三版源...

    我的四轴专用PID参数整定方法及原理---超长文慎入

    四轴飞行器的PID(比例-积分-微分)控制器是一种闭环控制算法,广泛应用于飞行器的姿态控制中。其核心在于根据系统的当前状态和期望状态之间的差异(误差),通过比例(P)、积分(I)和微分(D)三个调节参数,实现...

    [] - 2023-04-18 Java 陷阱:慎用入参做返回值!!!.pdf

    互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术...

    无线网络密码破解方法-比较强,慎用

    本文只做技术交流之用,提醒各位注意无线网络安全性,请勿用于其他用途,否则后果自负。 前言:面对电脑搜索到的无线网络信号,你是否怦然心动?但看到一个个“启用安全的无线网络”你是否又感到有一丝遗憾。本人...

    精彩编程与编程技巧-在ActiveX DLL工程中慎用App对象.txt...

    ### 二、在ActiveX DLL工程中慎用App对象的原因 #### 1. 全局状态依赖风险 在ActiveX DLL中使用App对象时,可能会无意中依赖于全局状态,这在多线程或多实例环境下容易引发数据冲突或错误的行为。例如,如果多个...

    [] - 2022-12-14 线上慎用 BigDecimal ,坑的差点被开了......pdf

    互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术...

    加密的惨剧!慎用文件夹加密软件!

    加密的惨剧!慎用文件夹加密软件! 加密的惨剧!慎用文件夹加密软件!

    java中慎用继承 以及java中的stack的败笔

    Java编程语言自1995年发布以来,已经成为全球开发者广泛使用的编程工具,其设计理念和特性不断进化和完善。然而,如同任何技术一样,Java在设计过程中也存在一些争议和值得探讨的问题,其中之一便是继承的使用。本文...

    以SSH框架与jQuery技术为_省略_础的Java_Web开发应用探讨_何晶.pdf

    5. 性能优化:jQuery的动画效果和事件处理优化了页面性能,而Hibernate的二级缓存和查询优化技术也有助于减少数据库负载,提高系统整体性能。 6. 易于学习和使用:SSH框架和jQuery都有丰富的社区支持和文档,降低了...

    管理培训-领导需要慎用话语权.docx

    领导者的慎用话语权主要体现在以下几个方面: 首先,领导应注重言出必行,避免轻易承诺。领导者的话往往被视为承诺,一旦承诺,就必须履行。若不能兑现,则可能引发团队成员的不满和信任危机。因此,领导者需谨慎...

    暴力删除一切顽固文件,慎用!

    把要删除的文件拖到这个文件上面即可。注意,这是强力删除。一定慎用,因为连垃圾箱都会没有的。

    华为网络产品与CISCO产品详细比较(内部学习-客户慎用)

    华为网络产品与CISCO产品详细比较(内部学习-客户慎用)

    Java有陷阱,用时需谨慎-慎用入参做返回值.zip

    计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...

    开发者准则--java

    【开发者准则--Java】是Java开发领域中遵循的一系列最佳实践和原则,旨在提升代码质量、可维护性和团队协作效率。以下是对标题和描述中提到的开发者准则的详细解释: 一、为代码加注释 良好的注释是代码可读性的...

    慎用动态编译

    标题“慎用动态编译”指的是在编程过程中对动态编译这一技术的谨慎态度。动态编译是程序运行时根据需要将源代码编译为可执行代码的过程,与静态编译(编译时一次性完成)形成对比。在Java中,JIT(Just-In-Time)...

    易语言处理事件命令慎用时钟版

    易语言处理事件命令慎用时钟版源码,处理事件命令慎用时钟版

    JAVA优化编程

    - **慎用反射**:反射操作通常比直接调用方法慢,尽量减少反射的使用。 - **元数据缓存**:使用Class.getDeclaredMethods等方法时,可以缓存结果以提高性能。 8. **监控与分析**: - **使用JVisualVM**:这是一...

Global site tag (gtag.js) - Google Analytics