问题标签 [final]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 为什么要在 Java 中的方法参数上使用关键字“final”?
我不明白在方法参数上使用final
关键字时真正方便的地方。
如果我们排除匿名类的使用、可读性和意图声明,那么对我来说几乎毫无价值。
强制某些数据保持不变并不像看起来那么强大。
如果参数是原始参数,那么它将不起作用,因为参数作为值传递给方法并且更改它不会在范围之外产生任何影响。
如果我们通过引用传递参数,那么引用本身就是一个局部变量,如果引用是从方法内部更改的,那么从方法范围之外不会有任何影响。
考虑下面的简单测试示例。尽管该方法更改了给它的引用的值,但该测试通过了,但没有任何效果。
java - 为什么要避免使用 final 关键字?
在 java 中,是否有允许扩展非抽象类的情况?
当有类层次结构时,它似乎总是指示错误的代码。你同意吗,为什么/为什么不同意?
php - 我什么时候应该使用“最终”?
我应该在日常编程(网络或其他方式)中声明一个类或方法 final 有什么特别的原因吗?请提供一个应该使用它的真实示例。
顺便说一句,我问是因为我试图选择一个“晦涩”的关键字并掌握它。
java - 在循环中创建最终变量
这在java中是否允许:
我的问题的关键字是final
。是否允许做一个随着循环的每次运行而改变的最终变量?我想知道这一点,因为 final 说您不能更改变量的值(仅调用myFinalVariable = i
),但我正在重新定义整个变量final int
。
它们是两个完全不同的变量,只是同名吗?循环上一次运行的变量已经在通往垃圾收集器的路上了?
java - 在Java中,为什么我不能在父类中声明一个最终成员(没有初始化它)并在子类中设置它的值?我该如何解决?
在 Java 程序中,我有多个子类继承自父类(这是抽象的)。我想表达每个孩子都应该有一个只设置一次的成员(我打算从构造函数中这样做)。我的计划是编写某事。像这样:
然而,这似乎并不能取悦 Java 之神。在父类中,我收到birthmark
“可能尚未初始化”的消息,在子类中,我收到“birthmark
无法访问最终字段”。
那么,Java 的方式是什么?我错过了什么?
java - 懒惰地实例化一个 final 字段
是否可以懒惰地实例化最终字段?
以下代码无法编译:
有替代方案吗?
java - 在Java中的构造函数之前初始化最终变量
是否有在 Java 构造函数中使用最终变量的解决方案?问题是,如果我初始化一个 final 字段,例如:
那么我不能在构造函数中使用它。Java 首先运行构造函数,然后运行字段。是否有允许我访问构造函数中的最终字段的解决方案?
java - 通过反射或其他方式覆盖java final 方法?
在尝试编写测试用例时会出现这个问题。Foo 是框架库中的一个类,我没有源代码访问权限。
我的申请将
由于其他依赖关系,我无法创建 Foo 对象,因此单元测试用例无法初始化。BarTest 抛出一个空指针,因为值为空。
有没有办法可以使用反射 api 将 getX() 设置为非最终的?或者我应该如何进行测试?
java - Python中变量的“final”关键字等效?
我在 Python 中找不到与 Java 等效的文档final
,有这样的东西吗?
我正在创建一个对象的快照(如果出现任何故障,用于恢复);一旦分配了此备份变量,就不应对其进行修改——Python 中的类似 final 的功能对此会很好。
c# - 为什么 C# 不允许 const 和 static 在同一行?
为什么 C# 不允许 const 和 static 在同一行?在 Java 中,您必须将字段声明为“静态”和“最终”以充当常量。为什么 C# 不允许您将 const 声明为 final?
我进一步区分,在 Java 中,每个接口都是公共的和抽象的,无论是否明确声明。const 本质上不是静态的吗?为什么 C# 对此犹豫不决?