我只是想了解为什么接口(interface)中定义的所有字段都是隐含的static和final。保持字段static的想法对我来说很有意义,因为您不能拥有接口(interface)的对象,但为什么它们是final(隐式)?任何人都知道为什么Java设计人员会在接口(interface)中制作static和final中的字段吗? 最佳答案 接口(interface)旨在指定交互契约,而不是实现细节。开发人员应该能够通过查看接口(interface)来使用实现,而不必查看实现它的类。接口(interface)不允许您创建它的实例,因为您
在Java中声明方法参数final是否有任何性能原因?如:publicvoidfoo(intbar){...}对比:publicvoidfoo(finalintbar){...}假设bar在foo()中只被读取而从未被修改。 最佳答案 final关键字不会出现在局部变量和参数的类文件中,因此不会影响运行时性能。它的唯一用途是澄清编码人员不更改变量的意图(许多人认为其使用的可疑原因),并处理匿名内部类。关于方法本身的final修饰符是否有任何性能提升存在很多争论,因为无论如何优化编译器都会在运行时内联这些方法,而不管修饰符是什么。在这
在Java中声明方法参数final是否有任何性能原因?如:publicvoidfoo(intbar){...}对比:publicvoidfoo(finalintbar){...}假设bar在foo()中只被读取而从未被修改。 最佳答案 final关键字不会出现在局部变量和参数的类文件中,因此不会影响运行时性能。它的唯一用途是澄清编码人员不更改变量的意图(许多人认为其使用的可疑原因),并处理匿名内部类。关于方法本身的final修饰符是否有任何性能提升存在很多争论,因为无论如何优化编译器都会在运行时内联这些方法,而不管修饰符是什么。在这
在Java类中,可以将方法定义为final,以标记该方法不能被覆盖:publicclassThingy{publicThingy(){...}publicintoperationA(){...}/**thismethoddoes@returnThatandisfinal.*/publicfinalintgetThat(){...}}这很清楚,它可能对防止意外覆盖或性能有所帮助——但这不是我的问题。我的问题是:从OOP的角度来看,我理解,通过定义方法final类设计器promises该方法将始终如所描述或暗示的那样工作.但通常这可能不受类作者的影响,如果方法正在做的事情更复杂,那么只需提
在Java类中,可以将方法定义为final,以标记该方法不能被覆盖:publicclassThingy{publicThingy(){...}publicintoperationA(){...}/**thismethoddoes@returnThatandisfinal.*/publicfinalintgetThat(){...}}这很清楚,它可能对防止意外覆盖或性能有所帮助——但这不是我的问题。我的问题是:从OOP的角度来看,我理解,通过定义方法final类设计器promises该方法将始终如所描述或暗示的那样工作.但通常这可能不受类作者的影响,如果方法正在做的事情更复杂,那么只需提
当我了解到类java.lang.String在Java中被声明为final时,我想知道为什么会这样。当时我没有找到任何答案,但是这篇文章:HowtocreateareplicaofStringclassinJava?让我想起了我的查询。当然,String提供了我曾经需要的所有功能,而且我从未想过需要扩展String类的任何操作,但你仍然永远不会知道某人可能需要什么!那么,有谁知道设计师在决定将其定稿时的意图是什么? 最佳答案 将字符串实现为不可变对象(immutable对象)非常有用。您应该阅读immutability以了解更多信息
当我了解到类java.lang.String在Java中被声明为final时,我想知道为什么会这样。当时我没有找到任何答案,但是这篇文章:HowtocreateareplicaofStringclassinJava?让我想起了我的查询。当然,String提供了我曾经需要的所有功能,而且我从未想过需要扩展String类的任何操作,但你仍然永远不会知道某人可能需要什么!那么,有谁知道设计师在决定将其定稿时的意图是什么? 最佳答案 将字符串实现为不可变对象(immutable对象)非常有用。您应该阅读immutability以了解更多信息
我试图找出Java中常量背后的原因我了解到Java允许我们使用final关键字来声明常量。我的问题是为什么Java没有引入常量(const)功能。由于很多人说它来自C++,所以在C++中我们有const关键字。请分享你的想法。 最佳答案 每次我从繁重的C++编码转到Java时,我都需要一点时间来适应const-correctness的缺乏。在java。如果您不知道,C++中const的这种用法与仅声明常量变量有很大不同。本质上,它确保当通过一种称为const指针的特殊类型的指针访问时对象是不可变的。在Java中,在我通常想要返回co
我试图找出Java中常量背后的原因我了解到Java允许我们使用final关键字来声明常量。我的问题是为什么Java没有引入常量(const)功能。由于很多人说它来自C++,所以在C++中我们有const关键字。请分享你的想法。 最佳答案 每次我从繁重的C++编码转到Java时,我都需要一点时间来适应const-correctness的缺乏。在java。如果您不知道,C++中const的这种用法与仅声明常量变量有很大不同。本质上,它确保当通过一种称为const指针的特殊类型的指针访问时对象是不可变的。在Java中,在我通常想要返回co
这个问题在这里已经有了答案:WhyshouldIusethekeyword"final"onamethodparameterinJava?(12个回答)关闭6年前。我经常遇到类似如下的方法:publicvoidfoo(finalStringa,finalint[]b,finalObject1c){}如果调用此方法而不传递最终参数会发生什么。即稍后更改的Object1(因此未声明为final)可以很好地传递给此方法 最佳答案 Java总是在将参数发送到方法之前制作一个副本。这意味着final对调用代码没有任何区别。这仅意味着在方法内部