栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

方法链接的优点和缺点,以及用对象本身替换所有无效返回参数的可能性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

方法链接的优点和缺点,以及用对象本身替换所有无效返回参数的可能性

缺点

  • 原则上,它混淆了签名,如果某些东西返回一个新实例,我不希望它也是一个变种方法。例如,如果一个矢量具有缩放方法,那么如果它有一个返回值,我会假定它返回一个由输入缩放的新矢量,如果没有,那么我希望它在内部进行缩放。
  • 加上当然,如果扩展了类,您会遇到问题,即在链接的途中,对象将转换为超类型。当在父类中声明了链接方法,但在子类的实例上使用了链接方法时,就会发生这种情况。

好处

  • 它允许将 数学方程式 代码编写为完整方程,而无需多个中间对象(导致不必要的开销),例如,无需方法链接向量三叉积(作为随机示例),则必须编写为
    MyVector3d tripleCrossProduct=(vector1.multiply(vector2)).multiply(vector3);

缺点是创建了必须创建并收集垃圾的中间对象,或者

        MyVector3d tripleCrossProduct=vector1;    tripleCrossProduct.multiplyLocal(vec2);    tripleCrossProduct.multiplyLocal(vec3);

它避免了中间对象的创建,
仍然非常不清楚,

tripleCrossProduct
实际上变量名实际上是第3行的谎言。但是,如果您具有方法链接,则可以以普通的数学方式简洁地编写它,而无需创建不必要的中间对象。

    MyVector3d tripleCrossProduct=vector1.multiplyLocal(vector2).multiplyLocal(vector3);

所有这些都假定vector1是牺牲性的,不再需要再次使用

  • 当然有明显的好处;简洁。即使您的操作未在上述示例的庄园中链接,您仍然可以避免不必要地引用该对象
        SomeObject someObject=new SomeObject();    someObject      .someOperation()      .someOtherOperation();

NB

MyVector3d
未被用作Java的真实类,但是被假定为在
.multiply()
调用方法时执行叉积。
.cross()
不使用它,以便对那些不熟悉矢量演算的人更清楚“意图” 。NB Amit的解决方案是使用多行方法链接的第一个答案,我将其作为完整性的第四个要点的一部分



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486116.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号