当前位置: 首页 > 知识库问答 >
问题:

具有final static方法的最终类冗余[duplicate]

邰英毅
2023-03-14

我在final类中有一堆静态final方法:

public class final Util{

    private Util{}

    // do I need the keyword final when the class is already final
    public static final util1{..}
    public static final util2{..}
    public static final util3{..}

}

我知道,当实例方法的类是final时,实例方法是隐式final的。但是,静态方法也是这样吗?

共有1个答案

单于善
2023-03-14

Final类首先不能扩展,因此它们的方法是否标记为Final并不重要。

例如,这将失败:

final class Util {
}
class Extra extends Util {
}

错误:无法从final Util
类Extra extends Util{

 类似资料:
  • 我是Java的新手,正在处理一个家庭作业问题。该问题指定使用一个构造函数创建一个Temperature类,该构造函数接受华氏温度(作为double)并将其存储在字段中。setFahrenheit方法接受一个华氏温度(以双倍数形式),并将其存储在字段中。 这在我看来是多余的。setFahrenheit方法不是和构造函数完全一样吗?

  • 问题内容: 我的问题很简单: 编译器是否将final类中的所有方法都视为final本身?将关键字添加到最终类中的方法是否有效果? 我知道最终方法更有可能被内联,这就是我要问的原因。 提前致谢。 问题答案: 没错,final类中的所有方法都隐式为final。 看这里: “请注意,您也可以将整个类声明为final。声明为final的类不能被子类化。例如,在创建不可变类(如String类)时,这特别有用

  • 问题内容: 将私有方法定型是否有好处?这样会提高性能吗? 我认为“私有最终”没有多大意义,因为私有方法不能被覆盖。因此,方法查找应该像使用final时一样高效。 (如果可能)将私有助手方法设为静态会更好吗? 最好使用什么? 问题答案: 添加方法不会提高Sun HotSpot的性能。HotSpot会在可能添加的地方注意到该方法永远不会被覆盖,因此请一视同仁。 在Java中,方法是非虚拟的。您不能覆盖

  • 我写JUnit测试有困难。问题是在下面的代码块中有最后一个方法: 是一个,它扩展了,后者是一个抽象类。 是中的最后一个方法。 这是我的Test类的浓缩版本: 我使用PowerMockito,因为我知道Mockito不能存根final方法。 我得到的错误是 在区域设置“EN_US”的代码“CONSTANT_STRING”下找不到消息。 看起来我的...实际上并没有被用作正在被调用。我尝试将添加到我创

  • 问题内容: 当其中的所有方法都是具体的时,有人在声明类抽象时有一些实际的编程情况吗? 问题答案: 好吧,您可能正在使用模板方法模式,其中存在多个都具有默认实现的覆盖点,但是组合的默认实现本身不合法-任何功能实现都必须是子类。 (是的,我不喜欢模板方法模式;)

  • 问题内容: 我想知道下面的代码是否有意义,因为编译器会警告“空白的最终字段对象可能尚未初始化”。有更好的方法吗? 问题答案: 我将字段定为final,并强制构造函数将值向上传递: