从现有方法中删除最终关键字

时间:2018-09-17 00:39:44

标签: java final

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

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

此类在一个库中实现,许多版本的代码库都使用该库的版本。

我想从final方法定义中删除getObj()。我知道以下事实:该方法将不再是inlined

final中删除getObj()关键字会给现有用户带来哪些其他可能的副作用?

2 个答案:

答案 0 :(得分:2)

@Khelwood评论:

  

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

因此,如果删除final关键字,则任何实现类都可以重写此方法功能(如@Khelwood的建议,最好在删除它之前先将其声明为final)。

答案 1 :(得分:0)

来自您的来源:

  

可以内联的方法包括静态,私有或最终方法   而且可以确定是否不是公共方法   覆盖。

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

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

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