问题标签 [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.

0 投票
5 回答
42091 浏览

java - Collections.unmodifiableSet() 在 Java 中做了什么?

我可以看到它Collections.unmodifiableSet返回给定集合的不可修改视图,但我不明白为什么我们不能只使用final修饰符来完成此操作。

在我的理解中,final声明一个常量:不能修改的东西。所以,如果一个集合被声明为一个常量,那么它就不能被修改:不能从集合中删除任何东西,也不能添加任何东西。

为什么我们需要Collections.unmodifiableSet

0 投票
4 回答
17808 浏览

python - 如何防止函数在python中被覆盖

有没有办法使类函数不可覆盖?类似于 java 的final关键字。即,任何重写类都不能重写该方法。

0 投票
7 回答
64319 浏览

java - 为什么可以修改最终对象?

我在我正在处理的代码库中遇到了以下代码:

INSTANCE被声明为final。为什么可以添加对象INSTANCE?那不应该使最终的使用无效。(它没有)。

我假设答案必须与指针和内存有关,但我想确定。

0 投票
3 回答
1775 浏览

scala - Scala 和 Java 内存模型

Java 内存模型(从 1.5 开始)将final字段与非final字段区别对待。特别是,如果this在构造过程中引用没有转义,final那么即使对象通过数据竞争对其他线程可用,对构造函数中字段的写入也保证在其他线程上可见。(不保证对非字段的写入final可见,因此如果您不正确地发布它们,另一个线程可能会看到它们处于部分构造的状态。)

是否有任何关于 Scala 编译器如何/是否为类创建final(而不是非final)支持字段的文档?我查看了语言规范并搜索了网络,但找不到任何明确的答案。(相比之下,@scala.volatile注释记录为将字段标记为volatile

0 投票
2 回答
449 浏览

java - 为什么我的内部类看到一个非静态变量?

早些时候,当内部匿名类没有看到“外部”类的字段时,我遇到了问题。我需要制作一个最终变量以使其对内部类可见。现在我有一个相反的情况。在“外部”类“ClientListener”中,我使用内部类“Thread”和“Thread”类,我有“run”方法,并且确实从“outer”类中看到了“earPort”!为什么?

0 投票
5 回答
252 浏览

java - 是否有任何理由使所有字段和变量成为最终的?

在我当前的项目中,我注意到方法中的所有类字段和变量都尽可能使用 final 修饰符声明。

就像这里:

有什么理由这样做吗?

ps 据我所知,项目不应该是多线程的(至少我什么都没听说过)。

0 投票
3 回答
649 浏览

java - Thread 的 run() 方法中的最终枚举

为什么 Elvis elvis 定义必须是最终的才能在 Thread run() 方法中使用?

0 投票
5 回答
873 浏览

java - 如何避免代码重复初始化最终属性?

}

0 投票
3 回答
3761 浏览

java - 在Java中发生异常时为最终变量分配默认值

为什么Java不让我在设置try块中的值后为catch块中的final变量赋值,即使在发生异常的情况下不可能写入最终值。

这是一个演示问题的示例:

这个问题并不难解决,但我想了解为什么编译器不接受这个。

提前感谢您的任何投入!

0 投票
5 回答
1622 浏览

java - Java:startingPath 作为“公共静态最终”异常

[已更新,对更改感到抱歉,但现在是真正的问题] 我不能在其中包含 try-catch-loop 以用于方法 getCanonicalPath() 的异常。我试图用方法更早地解决问题,然后在那里声明值。问题是它是最终的,我无法更改它。那么如何将startingPath设置为“public static final”。