如果一个Java对象被定义为final类型,那么它的引用不能被改变,但是对象本身的状态仍然可以被修改。这意味着你可以改变final对象的属性,但是不能将其引用指向另一个对象。
例如,下面的代码中,虽然person对象被声明为final类型,但是它的属性name和age仍然可以被修改。
final Person person = new Person("Tom", 25);
person.setName("Jerry");
person.setAge(30);
但是,如果试图将person的引用指向另一个对象,就会编译错误,例如:
final Person person = new Person("Tom", 25);
person = new Person("Jerry", 30); // 编译错误
因此,final关键字只是保证了对象的引用不会被改变,但并不保证对象本身的状态不会被改变。