Tag: 最终

空白的最终字段INITIAL可能尚未初始化

我是用Java编程的。 我已经为每个方法添加了注释来解释他们应该做什么(根据作业)。 我已将我所知道的内容添加到Password.java的存根中(我在研究学校提供的javadoc后创建了该存根)。 我的问题不是关于几个函数,我知道testWord和setWord中有错误,但我会自己处理。 我的问题是关于这一行: public static final java.lang.String INITIAL; 这条线是由学校提供的,所以我必须假设它是正确的,我无法找到关于常数字段值INITIAL的任何文档,所以如果有人能够提供关于那将是惊人的信息(例如,如何是处理?它存储什么?如果有的话?键入?)。 我在Eclipse中的这一行上得到了一个错误: 空白的最终字段INITIAL可能尚未初始化 为什么这个错误在这里? 提前感谢您的评论。 FYI来自Password.java的代码: package ss.week1; public class Password extends java.lang.Object { // —————— Instance variables —————- /** * The standard initial password. */ public static final java.lang.String INITIAL; // —————— Constructor ———————— /** * Constructs a Password with the initial word provided […]

为什么Java内部类需要外部类的变量是最终的?

可能重复: Java – 内部类和局部变量 如何将变量标记为最终允许内部类访问它们? Local Inner类不仅可以访问实例变量,还可以访问方法的局部变量(也可以定义它们),但必须将local varible声明为final 。 为什么在这种情况下必须将局部变量声明为final ?

同步以确保另一个线程将看到对不可变对象的引用

我正在研究这个,以了解新JMM中最终字段的行为(5以后)。 这个概念很清楚:在正确构造对象之后,保证初始化的最终字段对所有线程的可见性。 但是在本节的最后,我读到了这个,这让我感到困惑: 现在,说完所有这些,如果在一个线程构造一个不可变对象(即一个只包含最终字段的对象)之后,你想确保所有其他线程都能正确看到它,你通常还需要使用同步。 例如,没有其他方法可以确保第二个线程可以看到对不可变对象的引用。 这是否意味着虽然单个最终字段(组成不可变对象)没有同步(例如,此处可见性)问题。 但是,在线程中首次创建的不可变对象本身在其他线程中可能不可见(正确创建)? 如果是这样,虽然我们可以跨线程共享初始化的不可变对象而没有任何线程不安全的担忧,但在创建时,他们需要“特别关注”线程安全,就像其他可变项一样?

在Java方法性能中使用final关键字?

方法参数中的use final是否允许编译器或运行时环境更快地工作? 例如,如果您有一个变量要传递给您知道不会被修改并按原样使用的方法,那么将它声明为final是否更有效? 示例:第一种方法应该比第二种方法更快 public int isLargerAfterTripledFaster(int num, final int limit) { num *= 3; return (num > limit); } public int isLargerAfterTripled(int num, int limit) { num *= 3; return (num > limit); } 如果我可以肯定我永远不想在这里传递一个可修改的变量,我应该采用这种方法吗?

总是使用最终?

我已经读过,制作最终的东西,然后在循环中使用它会带来更好的性能,但它对一切都有好处吗? 我有很多地方没有循环,但我将final添加到局部变量。 它会使它变慢还是仍然好? 还有一些地方我有一个全局变量final(例如android paint),这是否意味着我在循环中使用它时不必将它作为局部最终版本?

推理方法的最终结果

对不起,这里有一个简单的问题,只是在我的笔记中找到了一些关于最终制作方法的内容。 我的笔记声称你应该为这个方法做出决定: 使强制执行不变量成为不可能。 String应该表现为String。 我真的不明白这是什么意思。 有人可以帮我分手吗? 非常感谢。

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

我正在设计一个用于二十一点游戏的Card类。 我的设计是使用getValue()创建一个Card类,例如,返回11表示J,12表示Q,13表示K,然后使用BlackjackCard类扩展它以覆盖该方法,以便这些卡返回10。 然后有些东西击中了我:Card类的对象应该是不可变的。 所以我重新阅读Effective Java 2nd Edition,看看该做什么,我发现不可变类需要是最终的,以避免子类打破不变性。 我也看过互联网,每个人似乎都同意这一点。 Card类应该是最终的吗? 你怎么能打破这个类的不变性,扩展它: class Card { private final Rank rank; private final Suit suit; public Card(Rank rank, Suit suit) { this.rank = rank; this.suit = suit; } public Rank getRank() { return rank; } public Suit getSuit() { return suit; } public int getValue() { return rank.getValue(); } […]

java关于final关键字的基础知识

最终关键字可以用于方法吗?

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

类文件格式是否支持最终关键字,以便将其与变量一起使用? 或者它只是从代码中推断出变量的有效终结性而JIT编译器基于它执行优化? 这里 ,在类文件格式文档中,他们提到了关于final关键字,但仅限于将其与final块和final类一起使用的情况。 最终变量没有任何内容。

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

我正在查看关于最终变量的另一个问题 ,并注意到你可以声明最终变量而不初始化它们(一个空白的最终变量)。 有没有理由这样做,什么时候有利?