final相关内容

抽象类可以有最终方法吗?

抽象类可以用Java编写最终方法吗? 解决方案 当然。有关示例,请查看模板方法模式。 抽象类游戏 { protected int playersCount; abstract void initializeGame(); abstract void makePlay(int player); abstract boolean endOfGame(); ..
发布时间:2018-12-29 21:01:14 Java开发

每个不可变的班级应该是最终的吗?

我正在设计一个用于二十一点游戏的Card类。 我的设计是使用返回的getValue()创建一个Card类,例如J为11,Q为12,K为13,然后用BlackjackCard类扩展它以覆盖该方法,使这些卡返回10。 然后点击我:Card类的对象应该是不可变的。所以我重新阅读Effective Java 2nd Edition,看看该做什么,我发现不可变类需要是最终的,以避免子类破坏不变性 ..
发布时间:2018-12-29 19:48:21 Java开发

Java方法关键字“final”及其用途

当我创建复杂类型层次结构(多个级别,每个级别有几种类型)时,我喜欢在实现某些接口声明的方法上使用 final 关键字。例如: interface Garble { int zork(); } 接口Gnarf扩展Garble { / ** *这与调用{@link #zblah(0)} *相同/ int zblah(); int zblah(int defaultZ ..
发布时间:2018-12-29 19:32:10 Java开发

可以过度使用最终伤害多做好吗?

为什么人们如此强调要让班级中的每个变量“最终”?我不认为将final添加到私有局部变量有任何真正的好处,或者真正使用final除了常量之外的任何东西并将变量传递给匿名内部类。 我不打算开始任何类型的火焰战争,老实说,我想知道为什么这对某些人来说如此重要。我错过了什么吗? 解决方案 意图。修改代码的其他人不会更改它们不应更改的值。 如果编译器知道某个字段的值永远不会编译,则可 ..
发布时间:2018-12-28 21:39:22 Java开发

JVM对类中的最终变量做了什么?

JVM如何在不同方面处理最终变量? 解决方案 JVM规范中至少有一节关于 final 对内存模型的影响,对于多线程代码来说非常重要: final 对象的字段允许“安全发布”: 当构造函数退出时,所有 final 字段必须是可见的 通过 final 引用访问的任何对象上的字段也保证至少是最新的当构造函数退出时。 总之,这意味着不可变对象(所有字段都是 final 并且是基元或 ..
发布时间:2018-12-28 15:41:05 Java开发

Java和Final关键字的使用

我是Java新手,已经在Delphi和C#中编程了一段时间。我的问题涉及当变量声明和实例化都发生在同一方法的范围内时,变量上使用“final”关键字,该变量包含实例化类。例如 private String getDeviceID(){ //获取android设备ID final TelephonyManager tm = (TelephonyManager)GetBaseConte ..
发布时间:2018-12-28 15:28:05 Java开发

线程中的最终字段语义

这是来自JLS 17.5: 最终字段的使用模型很简单。在该对象的构造函数中设置 对象的最终字段。 在对象的构造函数 完成之前,不要在另一个线程可以看到的地方构建对 的对象的引用。如果遵循这个,那么当对象时另一个线程, 看到该线程将始终看到该对象的最终 字段的正确构造版本。它还会看到最终 字段引用的任何对象或数组的版本,这些字段至少与最终字段一样是最新的。 JLS 17.5中 ..
发布时间:2018-12-28 14:55:36 Java开发

类文件格式的最终​​变量

类文件格式是否支持 final 关键字,以便将其与变量一起使用? 或者它只是推断出有效的最终结果来自代码的变量和JIT编译器基于它执行优化? 这里,在类文件格式文档中,他们提到了关于final关键字,但仅限于使用 final block 的情况和最终类。 没有关于最终变量的信息。 解决方案 不,类文件中没有这样的信息编码。 您可以通过编译 final 本地变量且没有 ..
发布时间:2018-12-28 14:49:39 Java开发

内部类非最终变量java

我需要更改内部类中的变量,并且我得到了臭名昭着的“不能引用在不同方法中定义的内部类中的非final变量”错误。 void onStart(){ bt.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ int q = i; } }); } 我很快就开了一个班,里 ..
发布时间:2018-12-28 14:37:03 Java开发

什么时候使用空白的最终变量?

我正在寻找另一个问题关于最终变量并注意到您可以在不初始化变量的情况下声明最终变量(空白最终的变量)。有没有理由这样做,什么时候有利? 解决方案 这对创建不可变对象很有用: public class Bla { private final Color color; public Bla(Color c){this.color = c}; } Bla ..
发布时间:2018-12-27 19:40:06 Java开发

使用final关键字声明List字段

如果我在一个类中有以下语句,其中 Synapse 是一个抽象类型: 私人最终名单突触; final 允许我仍然能够更改列表中 Synapse 对象的状态,但阻止我添加新的 Synapse 对象列表?如果我错了,你可以解释一下 final 正在做什么,以及何时我应该使用关键字 final 。 解决方案 不,final关键字不会使列表或其内容不 ..
发布时间:2018-12-27 19:34:21 Java开发

一个集合在Java中最终是什么意思?

在Java中声明final的集合意味着什么?是不是可以添加更多元素?是否已经存在的元素无法改变?这是别的吗? 解决方案 没有。它只是意味着参考不能改变。 final List list = new LinkedList(); .... list.add(someObject); //好的 list.remove(someObject); //好的 list = ne ..
发布时间:2018-12-27 19:27:36 Java开发

为什么String在Java中是不可变的或最终的

正如我被告知这是Java中重要的字符串访谈问题,首先讨论“什么是字符串”,字符串在java中与C或C ++中的不同之处,然后你被问及不可变对象,你就是问了一个主要问题:“为什么String在Java中是不可变的或最终的”。 你能分享你的想法吗? 提前致谢。 解决方案 主要针对安全原因。字符串用作网络连接中的参数,数据库URL等。如果它是可变的,它很容易受到攻击 字符串的不 ..
发布时间:2018-12-27 18:15:00 Java开发

创建一个没有final字段的不可变对象?

我们可以创建一个不可变对象,而不是所有字段都是最终的吗? 如果可能的话,几个例子会有所帮助。 解决方案 声明所有字段为私有且仅定义getter: public final class Private { private int a; private int b; public int getA(){return this.a;} public int get ..
发布时间:2018-12-27 18:07:06 Java开发

java中的常量变量和最终变量之间有什么区别?

请帮助我理解常量变量与Java中 final 变量之间的区别。我对它有点困惑。 解决方案 常量是概念,变量的属性。 final 是用于声明常量变量的java关键字。 正如其他人所指出的那样,从语义/语言学的角度来看,表达式常量变量是矛盾的,因此,我们可以争辩它的正确性。 引用规范,无论如何,我们可以阅读 原始类型的变量[...]是最终的并且使用编译时常量表达式(第1 ..
发布时间:2018-12-26 14:55:12 Java开发

为什么不声明一个数组最终使它在Java中不可变?

为什么不声明一个数组最终使它在Java中不可变?不宣布最终意味着它无法改变吗? 来自与不可变数组相关的问题很明显,声明一个数组final不会使它不可更改。 以下是可能的。 final int [] array = new int [] {0,1,2,3}; array [0] = 42; 我的问题是:在这里宣布决赛的功能是什么? 解决方案 fi ..
发布时间:2018-12-26 14:41:15 Java开发

记录器应该是最终的和静态的吗?

可以从许多线程访问类。在这种情况下必须是记录器也是最终的和静态的吗? 谢谢。 解决方案 所有主要的java日志包( java.util.logging , log4j 等)是同步的和线程安全的。即使从多个线程调用类,每个类的私有最终静态记录器的标准模式也很好。 ..
发布时间:2018-12-26 14:33:00 Java开发