从现有方法中删除 final 关键字
Removing final keyword from an existing method
说,我有一个现有代码,看起来有点像这样:
public class MyClass {
private AnotherClass obj;
// ... (class implementation)
public final getObj() { return obj; // It is this simple }
}
这个class是在一个库中实现的,它的版本被许多不同的代码库使用。
我想从 getObj()
方法定义中删除 final
。我知道该方法将不再是 inlined。
从 getObj()
中删除 final
关键字会对其现有用户造成哪些其他可能的副作用?
正如@Khelwood 评论的那样:
When a method is declared with final keyword, it is called a final
method and it cannot be overridden and We must declare methods with
final keyword for which we required to follow the same implementation
throughout all the derived classes.
因此,如果您删除 final
关键字,任何实现 class 都可以覆盖此方法功能(正如@Khelwood 建议的那样,最好在删除它之前知道为什么它被声明为 final)。
来自您的来源:
Methods that can be inlined include static, private or final methods
but also public methods if it can be determined that they are not
overridden.
内联是一个最小化开销的过程,根据循环和调用的次数内联方法。
final
关键字用于定义一个只能赋值一次的实体。当与方法一起使用时,它们不能被覆盖。
所以删除它,意味着只有你可以将该变量分配给另一个对象,如果它是一个方法,它们可以在接口实现或 class 继承时被覆盖,没有其他副作用!
说,我有一个现有代码,看起来有点像这样:
public class MyClass {
private AnotherClass obj;
// ... (class implementation)
public final getObj() { return obj; // It is this simple }
}
这个class是在一个库中实现的,它的版本被许多不同的代码库使用。
我想从 getObj()
方法定义中删除 final
。我知道该方法将不再是 inlined。
从 getObj()
中删除 final
关键字会对其现有用户造成哪些其他可能的副作用?
正如@Khelwood 评论的那样:
When a method is declared with final keyword, it is called a final method and it cannot be overridden and We must declare methods with final keyword for which we required to follow the same implementation throughout all the derived classes.
因此,如果您删除 final
关键字,任何实现 class 都可以覆盖此方法功能(正如@Khelwood 建议的那样,最好在删除它之前知道为什么它被声明为 final)。
来自您的来源:
Methods that can be inlined include static, private or final methods but also public methods if it can be determined that they are not overridden.
内联是一个最小化开销的过程,根据循环和调用的次数内联方法。
final
关键字用于定义一个只能赋值一次的实体。当与方法一起使用时,它们不能被覆盖。
所以删除它,意味着只有你可以将该变量分配给另一个对象,如果它是一个方法,它们可以在接口实现或 class 继承时被覆盖,没有其他副作用!