关于Thread类的方法setName()中的final关键字



final是java中的访问修饰符还是非访问修饰符?

线程类public final void setName(字符串名称(的这个setName((方法真的是final吗?如果是的话,这是否意味着一旦线程名称被更改,那么由于最终关键字..,它以后就不能更改了。。?

或者final不是方法setName((的一部分?

请给我一个正确的答案。。

请理解以下两者之间的区别:

  1. member variables作为最终和

    • 每当任何类的variables被标记为final时,就意味着以后不能更改它们
    • 请记住:正如@GhostCat所指出的,当将member variables标记为final时,一旦指定了final变量,它总是包含相同的值,然而,它所引用的对象可能会更改。例如,考虑这个List对象:

      final List<Integer> list = new ArrayList<Integer>();  
      list = new ArrayList<Integer>(); // Invalid  
      list.add(2); //Valid  
      

      有关更多详细信息,请参阅此答案。

  2. method declarations标记为最终

    • 每当任何method被声明为final时,就意味着它不能被子类覆盖
  3. 将java中的classes作为最终版本
    • 每当任何类被声明为final时,就意味着它不能被子类化,也就是说,它不能被任何其他类扩展。(例如,字符串类(

既然Thread类的setName()方法是final,并不意味着我们不能更改该Threadname。相反,它只是意味着这个方法不能被extends这个类的类重写。

最新更新