问题标签 [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 投票
3 回答
2177 浏览

java - Java:在超类中初始化一个公共静态字段,该字段在每个子类实例中都需要不同的值

晚上好,

我正在开发一组 Java 类,以便一个容器类Box包含一个List包含的类Widget。AWidget需要能够指定与其他的关系Widgets。我想一个很好的方法是做这样的事情:

所以 can 的子类Widget

现在,BlueWidget可以做getBox().addWidgetRelationship(RelationshipTypes.SomeType, RedWidget.WIDGETID,并且Box可以遍历它的列表,将第二个参数与iter.next().getWidgetID().

现在,到目前为止,这一切都很好。我想要做的是不必public static final WidgetID WIDGETID在所有子类中声明并在父Widget类中实现它。问题是,如果我将那行代码移入Widget(连同 的实现getWidgetID()),那么 的子类的每个实例Widget似乎都static final WidgetID对它们的Subclassname.WIDGETID. 但是,使其成为非静态意味着我什至不能再调用Subclassname.WIDGETID.

那么:我如何WidgetID在父Widget类中创建一个静态,同时确保它的每个实例Widget和子类都不同Widget?还是我在这里使用了错误的工具来完成这项工作?

谢谢!

[编辑] 我不希望库的用户调用super()他们所有的子Widget构造函数。

0 投票
3 回答
103631 浏览

java - 通过反射获取Java中类的公共静态最终字段/属性的值

假设我有一堂课:

如何通过反射获得“_1st”的值?

0 投票
4 回答
299 浏览

php - 将任何类或任何方法声明为“最终”的示例场景是什么?

将任何类或任何方法声明为“最终”的示例场景是什么?我们什么时候需要这样做?

请给我一些例子来理解“final”的实际使用......

请详细说明你的答案....

请指导我,因为我是 OOP 的初学者

0 投票
2 回答
933 浏览

java - 在 Java 中实现可克隆

在哪些情况下我应该使用这种方式:

在哪些情况下我应该使用这种方式:

如果x是最终的并且我想使用第一种方式,我该怎么办?

关于第一种方式,我的理解是这样的:我们克隆超类并向上转换它,导致一些成员未初始化。在此之后初始化这些成员。我的理解正确吗?

谢谢你。

0 投票
8 回答
139984 浏览

java - 为什么Java中没有Constant特性?

我试图找出Java中常量背后的原因我了解到Java允许我们使用final关键字来声明常量。

我的问题是为什么 Java 没有引入一个 Constant ( const) 特性。由于很多人说它来自 C++,所以在 C++ 中我们有const关键字。

请分享你的想法。

0 投票
4 回答
621 浏览

java - 从匿名 Java 类中改变原始变量的合理方法是什么?

我想编写以下代码:

显然这是不允许的,因为found需要finalfound出于线程安全的原因,我无法创建成员字段。什么是最好的选择?一种解决方法是定义

但这最终会在正确格式化时占用大量空间,如果可能的话,我宁愿不重新发明轮子。我可以将 aList<Boolean>与单个元素一起使用(改变该元素,或者清空列表),甚至可以使用Boolean[1]. 但一切似乎都闻起来很有趣,因为没有一个选项按预期使用。

这样做的合理方法是什么?

0 投票
5 回答
14716 浏览

java - 在 Java 中初始化最终变量的问题

我一直在 Java 中遇到一个问题的细微变化,它开始影响到我,我真的想不出一个合适的方法来解决它。

我有一个最终但动态的对象属性。也就是说,我希望该值在分配后保持不变,但每个运行时该值可能不同。所以我在类的开头声明了类级别的变量——比如说private final FILE_NAME;。然后,在构造函数中,我给它赋值——比如说FILE_NAME = buildFileName();

当我在buildFileName()引发异常的方法中有代码时,问题就开始了。所以我在构造函数中尝试这样的事情:

现在我有一个错误 - “空白的最终字段 FILE_NAME 可能尚未初始化。” 这就是我开始对 Java 的严格编译器有点恼火的地方。我知道这不会成为问题,因为如果它被捕获,程序将退出......但编译器不知道,因此不允许此代码。如果我尝试向 catch 添加一个虚拟分配,我会得到 - “最终字段 FILE_NAME 可能已经被分配。” 我显然不能在 try-catch 之前分配默认值,因为我只能分配一次。

有任何想法吗...?

0 投票
2 回答
976 浏览

class - Scala 中是否有向 Array 对象添加方法的模式?

Scala 中是否有可以向 Array 对象添加方法的模式?

我正在考虑将 Int 隐式转换为 RichInt。但这无法做到,因为 Array 是最终类。

0 投票
2 回答
3410 浏览

java - 在 ArrayBlockingQueue 中,为什么要将 final 成员字段复制到本地 final 变量中?

其中ArrayBlockingQueue,所有需要锁的方法final在调用之前将其复制到一个局部变量中lock()

当字段为时,是否有任何理由复制this.lock到局部变量?lockthis.lockfinal

此外,它还在E[]操作之前使用了本地副本:

是否有任何理由将最终字段复制到本地最终变量?

0 投票
6 回答
4887 浏览

java - What is the effect of final variable declaration in methods?

Classic example of a simple server:

Why should the Socket be declared as final? Is it because the new Thread that handles the request could refer back to the socket variable in the method and cause some sort of ConcurrentModificationException?