【问题标题】:Should we not declare a method static if it depends on instance creation? [closed]如果方法依赖于实例创建,我们不应该声明静态方法吗? [关闭]
【发布时间】:2021-03-16 23:41:11
【问题描述】:

我读到了这篇关于何时应该使用静态函数的文章,但我不明白。有人可以举个例子解释一下吗?

你应该随时使用静态方法,

方法中的代码不依赖于实例创建,也没有使用任何实例变量。

来源:https://www.tutorialspoint.com/When-to-use-static-methods-in-Java

【问题讨论】:

  • 任何人都可以提出任何主张,无论对错。在您的问题中添加您的索赔来自哪里会很有用。无论是一本书,还是网络上的一篇文章/帖子等。目前尚不清楚声明的真正含义是“不依赖于实例创建”,知道声明的来源也有助于添加此类上下文。
  • Erwin,“不依赖于实例创建”的意思是,这是一个应该能够完成其工作的方法,即使尚未创建类的实例。如果你问我,Harshit 引用的建议更多的是重复而不是有用。
  • 在他的问题中引用该建议似乎是合理的,因为 (a) 显然是正确的,并且 (b) 有必要理解他在问什么。如果他把它拿出来,那么他需要解释它来解释他的问题是什么,并且他需要理解它才能有效地解释它。
  • 我已经编辑了描述并添加了来源。

标签: java static static-methods


【解决方案1】:

静态方法与非静态方法的不同之处在于它们不与任何特定对象关联,因此不允许您在其中引用this。这包括对this 的隐式引用。方法通常是非静态的,因为它们中的大多数定义了对象的行为,并且该行为需要类的实例才能具有任何意义。例如,List 类将有一个非静态方法,可以将某些内容附加到列表中。该方法需要一个列表的实际实例才能有意义 - 如果您只是说“将 5 添加到列表”,那么响应将是“哪个列表?”。其语法最终看起来像myList.push(5);,您可以通过在点之前放置对对象的引用来指定要附加到的列表。但是,如果您有一个不需要类实例的操作,那么需要构造一个来调用该函数将是愚蠢的。例如,平方根函数不依赖于一些需要构造的数学对象,它只对单个数字进行运算。因此,为了避免让您执行 new Math().sqrt(5); 之类的操作,他们创建了一个静态方法,您可以像 Math.sqrt(5); 一样调用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2013-11-25
    • 2015-11-25
    • 1970-01-01
    • 2011-02-27
    • 2019-08-07
    • 2014-04-12
    相关资源
    最近更新 更多