当前位置: 首页 > 知识库问答 >
问题:

即使对于无状态类,静态方法在java中总是不被鼓励吗?[副本]

仲孙翔飞
2023-03-14

例如,

public class ClassA {
    // no instance fields
    public int method1(int x, int y) {
        // do things...
        return x+y;
    }
}

我感觉到一种强烈的冲动,想要声明公共静态void int方法(int x,int y),但似乎“Java中的人”不喜欢使用静态方法,除非有很好的理由。你们觉得呢?

共有1个答案

薛晨
2023-03-14

静态方法在正确的上下文中是很好的。

试着弄清楚调用一个方法是否有意义,即使一个类还没有声明。

例如,java API中的数学方法。您希望能够方便地简单键入:

Math.abs(value)
public class ClassA {
// no instance fields
public int method1(int x, int y) {
    // do things...
    return x+y;
}

我会声明这是静态的。

 类似资料:
  • 大多数在线来源都表明您可以静态链接glibc,但不鼓励这样做;例如centos包repo: glibc静态包包含用于静态链接的C库静态库。你不需要这些,除非你静态链接,这是非常不鼓励的。 这些消息来源很少(或从未)说明为什么这是个坏主意。

  • 问题内容: 这是来自Hibernate的官方教程: 还有一个替代声明,该声明允许使用组合键访问旧数据。强烈建议不要将其用于其他任何用途。 为什么不鼓励使用复合键?我正在考虑使用一个三列表,其中所有列都是外键,并且一起形成一个主键,这在我的模型中是有意义的关系。我不明白为什么这是一个坏主意,特别是我将在它们上使用索引。 有什么选择?创建一个额外的自动生成的列并将其用作主键?无论如何,我仍然需要查询我

  • 所以,简而言之。我有两节课。 它不断地抛出错误“不能对非静态方法gameStart()进行静态引用”。我肯定我错过了一些简单的东西,但找不到了。谢了!

  • 问题内容: 我刚刚在一些我未编写的代码中发现了一个错误,我对此感到有些惊讶: 尽管该代码在输入数据上失败了很多 _(因为它试图以17.01.2011格式查找日期并返回诸如10396/2011之类的东西,然后由于无法解析日期而崩溃,但这 确实是错误 的)这个问题的重点;)_我想知道: Pattern.compile 的要点之一不是要进行速度优化(通过预编译正则表达式)? 难道不是所有的“静态”模式都

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

  • 问题内容: 假设以下内容: parsedUntil是否被视为静态变量?我注意到我无法在此静态函数中将其声明为静态。 后续问题:我读到一个静态变量只会被初始化一次。这是否意味着我第一次调用函数A()时,该值将设置为零,但是每隔一次我调用A()时,该行将被省略吗? 问题答案: 不,它不是静态变量。这是一个局部变量。方法中声明的任何变量都是局部变量。如果需要静态变量,则必须在方法外声明它: 没有办法声明