在 Java 中,final

1. 声明常量

final

示例代码:

登录后复制

final int MAX_VALUE = 100;
// MAX_VALUE = 200; // 编译错误,不能改变常量值
2. 方法不能被重写

在方法前加上 final

示例代码:

登录后复制

class Parent {
    final void display() {
        System.out.println("This is a final method.");
    }
}

class Child extends Parent {
    // void display() { // 编译错误,不能重写父类的 final 方法
    //     System.out.println("Trying to override.");
    // }
}

3. 类不能被继承

final

示例代码:

登录后复制

final class Utility {
    static void helperMethod() {
        System.out.println("Utility method.");
    }
}

// class ExtendedUtility extends Utility { // 编译错误,不能继承 final 类
// }
4. 引用不可变

在对象的情况下,将引用变量声明为 final,意味着这个引用不能再指向其他对象,但对象本身的内容仍然可以被修改。这在处理不可变对象时非常有用。

示例代码:

登录后复制

final List<String> myList = new ArrayList<>();
myList.add("Hello");
// myList = new ArrayList<>(); // 编译错误,不能改变引用
5. 性能优化

final

6. 编译期常量

final

7. 编译器重排序规则

对于 final

  • 在构造函数内对一个

final

  • 初次读一个包含

final

  • 域的对象的引用与随后初次读该

final


final 关键字在 Java 中具有重要的作用,可以用来声明常量、限制方法重写、防止类继承、管理引用的不可变性,以及优化性能。合理使用 final 可以提高代码的安全性、可读性和设计的清晰性,帮助开发者维护代码的稳定性。此外,final