【问题标题】:Cannot make static reference to the non-static method (Java)无法对非静态方法进行静态引用 (Java)
【发布时间】:2013-06-30 10:53:24
【问题描述】:
g.drawString(p2.getName(), 800 - FontMetrics.stringWidth(p2.getName()), 40);

该行导致错误“无法从类型 FontMetrics 对非静态方法 stringWidth(String) 进行静态引用。

getName() 方法是在播放器类中定义的,而 p2 是该类的一个实例,所以我看不出p2.getName() 是如何成为静态引用的。

【问题讨论】:

    标签: java methods reference static


    【解决方案1】:

    您需要使用FontMetrics 的实例。您可以从Graphics 对象中获取一个:

    g.drawString(p2.getName(), 800 - g.getfontMetrics().stringWidth(p2.getName()), 40);
    

    【讨论】:

      【解决方案2】:

      因为不是——静态引用是stringWidth

      FontMetrics.stringWidth 是一个实例方法。错误信息是:

      无法对 FontMetrics

      类型的非静态方法 stringWidth(String) 进行静态引用

      【讨论】:

      • 那么你将如何解决这个问题?
      • @OliverBennett 这取决于 - 你需要获取一个 FontMetrics 实例并将其称为fontMetrics.stringWidth(p2.getName())fontMetrics 是变量名。
      【解决方案3】:

      stringWidth() 方法不是静态方法,需要FontMetrics 的实例才能访问它。

      您正在以静态方法访问它,因此它会给您错误。

      【讨论】:

        【解决方案4】:
        g.getFontMetrics.stringWidth("your string")
        

        【讨论】:

        • 你需要getFontMetrics() 而不是getFontMetrics
        猜你喜欢
        • 2011-06-25
        • 2014-11-19
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        相关资源
        最近更新 更多