【问题标题】:static, final, static final - correct usage and when to use them?静态,最终,静态最终 - 正确用法以及何时使用它们?
【发布时间】:2014-06-23 10:23:13
【问题描述】:

我想知道什么时候应该对变量和(或)方法使用静态、最终、静态最终参数。据我了解:

  • final:使用类似于 c++ 中的 const 参数。这基本上意味着值(或方法中的返回值)不会改变。
  • 静态:这意味着值(或方法)没有直接分配给某个对象 - 因此您可以在其他类中使用静态变量(或方法)而无需创建对象
  • final static:这种组合是否意味着你有变量(或方法),你可以在不创建对象的情况下访问它(静态)并且你不能改变它的值(就像在c++中的const)(final)李>

如果我是对的,那我什么也得不到。在 IntelliJ IDE 中,当您将方法声明为 public final static 时,它指出应该删除 final,因为已经指出了 static。为什么,如何,何时???

【问题讨论】:

  • 我不知道你所说的“改变它的值”对于一个方法是什么意思,但是final方法是一个不能被覆盖的方法。
  • @ZouZou 我的意思是,例如: final String hello = "Hello";然后在某些方法中,当我们尝试更改 string hello 值时,我们会收到错误,因为它已被声明为最终值。
  • 是的,我说的是你对方法的推理。
  • 静态方法不能被覆盖,只能被隐藏/隐藏。 final 是多余的。

标签: java static final


【解决方案1】:

static 表示字段或方法属于,而不是类的单个实例

final 在应用于方法与字段(或局部变量)时实际上意味着不同的东西:

  • final 变量和字段无法重新分配。这与 C++ 的 const 非常相似。
  • final 方法不能被覆盖这仅适用于实例上的方法。在这个意义上使用时,final 与 C++ 的 const 不同。

因为您不能覆盖类上的 static 方法,所以组合修饰符 static final通常是多余的,这就是 IntelliJ 建议您删除其中一个修饰符的原因。

补充说明:

相关SO问题:"Is it a bad idea to declare a final static method?"

【讨论】:

  • it makes no sense to have a static final method static 方法不能被覆盖,但可以隐藏。让他们final 甚至可以防止隐藏。
  • @Pshemo 够公平的。已更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 2015-04-20
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多