当前位置: 首页 > 面试题库 >

在Java中,类上的静态方法有什么缺点吗?

卫胜
2023-03-14
问题内容

让我们假设在我的编码环境中强加了一条规则(或一条经验法则),该类上的任何不使用,修改或以其他方式需要任何实例变量来完成其工作的方法都应设为静态。是否有任何固有的编译时间,运行时或其他缺点?

(为进一步澄清而编辑)

我知道这个问题有些悬而未决,因此我对此表示歉意。我的询问意图主要是在“辅助”方法的背景下进行的。实用程序类(带有私有CTOR,因此无法实例化)作为我们已经做过的静态方法的持有人。我的问题是更多这些帮助主类API的小方法。

我可能在一个类上有4个或5个主要的API
/实例方法来完成实际工作,但是在这样做的过程中,它们共享一些共同的功能,这些功能可能仅在API方法的输入参数上起作用,而在内部状态上不起作用。这些是我通常提取到其自己的帮助器方法中的代码部分,并且如果不需要访问类的状态,请将其设置为静态。

因此,我的问题是,这本质上是一个坏主意,如果是,为什么?(或者为什么不呢?)


问题答案:

主要缺点是您不能在运行时交换,覆盖或选择方法实现。



 类似资料:
  • 我脑子里有一个问题。我读过静态同步方法锁定类对象,同步方法锁定对象的当前实例。那么锁定类对象是什么意思呢? 有人能在这个话题上帮我吗?

  • 问题内容: 请参见下面的代码段: 代码1 代码2 这些代码段之间有什么区别?两者都15作为答案输出。 问题答案: 静态方法属于类本身,而非静态(aka实例)方法属于从该类生成的每个对象。如果你的方法执行的操作不依赖于其类的单个特征,请将其设置为静态(这将使程序的占用空间减小)。否则,它应该是非静态的。 例: 你可以像这样调用静态方法:。如果你使用method2尝试该操作,它将失败。但这将起作用:;

  • 问题内容: 我正在进行代码审查,并遇到了一个使用所有静态方法的类。入口方法接受几个参数,然后开始调用其他静态方法,并传递入口方法接收到的所有或某些参数。 它不像具有大量不相关的实用程序功能的Math类。在我自己的常规编程中,我很少编写Resharper弹出并说“这可能是静态方法”的方法,而当我这样做时,它们往往是无用的实用方法。 这种模式有什么问题吗?如果类的状态保存在字段和属性中或使用参数在静态

  • 问题内容: 为什么我们不能在非静态内部类中使用静态方法? 如果我将内部类设为静态,则可以工作。为什么呢 问题答案: 因为内部类的实例与外部类的实例隐式关联,所以它本身不能定义任何静态方法。由于静态嵌套类无法直接引用其封闭类中定义的实例变量或方法,因此只能通过对象引用使用它们,因此在静态嵌套类中声明静态方法是安全的。

  • 问题内容: 我在代码中遇到了python中的未绑定方法错误 在阅读了许多有用的文章之后,我想到了如何在上面添加内容以使代码正常工作。我是python新手。有人可以解释一下为什么要定义静态方法吗?还是为什么不将所有方法都定义为静态方法? 问题答案: 静态方法的使用受到限制,因为它们无法访问类的实例的属性(就像常规方法一样),并且它们也不能访问类本身的属性(就像类方法一样) )。 因此,它们对于日常方

  • 我经常使用静态关键字,但不清楚静态关键字主要用途是什么。可以任意定义,这是在面向对象的java显示方法中使用的