从现有方法中删除final关键字

问题描述 投票:4回答:2

说,我有一个现有的代码,看起来有点像这样:

public class MyClass {
    private AnotherClass obj;
    // ... (class implementation)
    public final getObj() { return obj; // It is this simple }
}  

该类在库中实现,其版本由许多不同的代码库使用。

我想从final方法定义中删除getObj()。我知道这个方法将不再是inlined

还有什么其他可能的副作用可以将final关键字从getObj()中移除给现有用户?

java final
2个回答
2
投票

正如@Khelwood评论的那样:

当使用final关键字声明方法时,它被称为final方法,并且不能被覆盖。我们必须使用final关键字声明方法,我们需要在所有派生类中遵循相同的实现。

因此,如果删除final关键字,任何实现类都可以覆盖此方法功能(如@Khelwood建议,最好知道为什么在删除它之前将其声明为final)。


0
投票

来自您的来源:

可以内联的方法包括静态,私有或最终方法,但如果可以确定它们未被覆盖,则还包括公共方法。

内联是一个最小化开销的过程,并且根据循环和调用的数量来内联方法。

final关键字用于定义只能分配一次的实体。与方法一起使用时,无法覆盖它们。

因此删除它意味着只有你可以将该变量分配给另一个对象,如果它是一个方法,它们可以在实现接口或类继承时被覆盖,没有其他副作用!

© www.soinside.com 2019 - 2024. All rights reserved.