说,我有一个现有的代码,看起来像这样:
public class MyClass {
private AnotherClass obj;
// ... (class implementation)
public final getObj() { return obj; // It is this simple }
}
此类在一个库中实现,许多版本的代码库都使用该库的版本。
我想从final
方法定义中删除getObj()
。我知道以下事实:该方法将不再是inlined。
从final
中删除getObj()
关键字会给现有用户带来哪些其他可能的副作用?
答案 0 :(得分:2)
@Khelwood评论:
当使用final关键字声明方法时,该方法称为final 方法,它不能被覆盖,我们必须用 我们需要遵循相同实现的final关键字 在所有派生类中。
因此,如果删除final
关键字,则任何实现类都可以重写此方法功能(如@Khelwood的建议,最好在删除它之前先将其声明为final)。
答案 1 :(得分:0)
来自您的来源:
可以内联的方法包括静态,私有或最终方法 而且可以确定是否不是公共方法 覆盖。
内联是使开销最小化的过程,并且根据循环和调用的数量来内联方法。
final
关键字用于定义只能分配一次的实体。与方法一起使用时,它们不能被覆盖。
因此,将其删除意味着只有您可以将该变量分配给另一个对象,如果它是一种方法,则在实现接口或继承类时可以覆盖它们,没有其他副作用!