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

final static方法的性能

景才英
2023-03-14

我一直在玩静态方法的修饰符,遇到了一个奇怪的行为。

我们知道,静态方法不能被重写,因为它们与类而不是实例相关联。

//Snippet 1 - Compiles fine
public class A {
    static void ts() {
    }
}

class B extends A {
    static void ts() {
    }
}

但是如果我在类A中包含了静态方法的final修饰符,则编译失败,B中的ts()不能重写A中的ts();重写的方法是静态final。

为什么在静态方法根本无法重写的情况下会出现这种情况?

共有1个答案

卢勇
2023-03-14

不能重写静态方法,但可以隐藏它们。B的ts()方法不重写(不受多态性影响)A的ts(),但它将隐藏它。如果在B中调用ts()(而不是A.ts()B.ts()...只调用ts()),则将调用B中的一个,而不是A。因为这不受多态性的影响,所以A中的调用ts()将永远不会重定向到B中的一个。

关键字final将禁止隐藏该方法。因此它们不能被隐藏,这样做的尝试将导致编译器错误。

希望这有帮助。

 类似资料:
  • 问题内容: 我有一张地图,其中填充了大量数据(大约有300,000条记录) 并如下迭代 } 如上所述,我担心由于在for循环内执行上述操作而导致的性能问题。 更新: 情况是。我正在迭代一个包含大量数据的地图, 在迭代它时,我正在获取用户ID,并且我必须对用户ID进行计算。例如,考虑userid+some constants并应该在数据库表中对其进行更新。 并且还应该与我地图中的列表值一起添加到电子

  • 本文向大家介绍angularjs性能优化的方法,包括了angularjs性能优化的方法的使用技巧和注意事项,需要的朋友参考一下 学习angularjs有一段时间了,但是一直都没有怎么考虑过性能方面的问题,上次在研究过滤器的时候涉及到了性能问题。所以自己也总结了下常用的性能优化。 优化$watch 1.及时移除不必要的watch 2.尽量避免深度watch 我们都知道$watch有三个参数,第三个参

  • 对于我们的报告UI,我们查询sessions对象并在屏幕中列出它。为了查询数据,我们使用Hibernate和通用Dao实现。在使用Dynatrace之前,我们总是将此查询归咎于数据库,但在开始使用Dynatrace之后,它告诉我们,瓶颈在QueryImpl的代码中。列表方法。我们的Prod和Dev性能都很差,Prod中的总计数记录约为200万条,需要75秒(是的,超过1分钟:()下面的屏幕截图显示

  • 问题内容: 我有这段代码在做Range Minimum Query 。当t = 100000时,i和j始终在每条输入行中更改,因此在Java 8u60中其执行时间约为12秒。 当我提取一个新方法以找到最小值时,执行时间快了4倍(约2.5秒)。 我一直认为方法调用很慢。但是这个例子却相反。Java 6也演示了这一点,但是在两种情况下(17秒和10秒)执行时间都慢得多。有人可以对此提供一些见识吗? 问

  • 我有一段代码在做最小范围查询。当t=100000时,i和j在每个输入行中总是发生变化,其在Java8u60中的执行时间约为12秒。 当我提取一个新方法来寻找最小值时,执行时间快了4倍(大约2.5秒)。 我一直认为方法调用很慢。但是这个例子显示了相反的情况。Java6也演示了这一点,但是两种情况下的执行时间都要慢得多(17秒和10秒)。有人能对此提供一些见解吗?

  • 本文向大家介绍浅谈react性能优化的方法,包括了浅谈react性能优化的方法的使用技巧和注意事项,需要的朋友参考一下 React性能优化思路 软件的性能优化思路就像生活中去看病,大致是这样的: 使用工具来分析性能瓶颈(找病根) 尝试使用优化技巧解决这些问题(服药) 使用工具测试性能是否确实有提升(疗效确认) 初识react只是为了尽快完成项目,后期进行代码审查时候发现有很多地方需要优化,因此做了