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

无法对类型Two[duplicate]中的非静态方法fxn(int)进行静态引用

齐胜涝
2023-03-14

可能重复:
“不能从静态上下文引用非静态方法”背后的原因是什么?
不能对非静态方法进行静态引用
不能对非静态字段进行静态引用

我不明白我的代码出了什么问题。

class Two {
    public static void main(String[] args) {
        int x = 0;

        System.out.println("x = " + x);
        x = fxn(x);
        System.out.println("x = " + x);
    }

    int fxn(int y) {
        y = 5;
        return y;
    }
}

线程“main”java.lang.error中的异常:未解决的编译问题:无法静态引用Two中的非静态方法fxn(int)

共有2个答案

袁玮
2023-03-14

不能访问方法fxn,因为它不是静态的。静态方法只能直接访问其他静态方法。如果您想在您的主方法中使用fxn,您需要:

...
Two two = new Two();
x = two.fxn(x)
...

即创建一个双对象并调用该对象上的方法。

...或将fxn方法设置为静态。

秦承安
2023-03-14

由于main方法是static方法,而fxn()方法不是,所以如果不首先创建two对象,就不能调用该方法。因此,您可以将方法更改为:

public static int fxn(int y) {
    y = 5;
    return y;
}

或将main中的代码更改为:

Two two = new Two();
x = two.fxn(x);

在Java教程中阅读关于static的更多信息。

 类似资料:
  • 我试图在我的程序中使用accessors(Set/Get)方法,当我试图在main方法中使用Get方法时,我得到了以下错误: 无法从Student类型对非静态方法进行静态引用。 我不确定如何着手解决这个问题。我是Java编程的初学者。 以下是具体的问题: 设置/获取方法: 错误行: 任何建议都将不胜感激* 我的代码的完整图片。

  • 问题内容: 我的Android程序中存在旧的“无法对非静态方法进行静态引用”错误,我遇到了一些问题。我正在创建一个掉落游戏(类似于Powder Game),并且创建了一个名为Control的类,以在屏幕底部创建一个带有画笔大小滑块(效果很好)的控件栏,并弹出一个按钮,允许用户选择所选元素的对话框。但是,当我从代码中调用DemoActivity.showDialog(2)时,它将静态引用非静态错误(

  • 问题内容: 到目前为止,我有以下代码: } 当我尝试在末尾设置double 时,出现错误消息“无法对非静态方法进行静态引用”。它说解决方法是也使该方法静态化,但是我的教授告诉我不要将该字段静态化。有一个简单的解决方案我只是想念吗? 问题答案: 静态方法属于该类,非静态方法属于该类的 实例 。 当您从呼叫时,您会收到错误消息,因为它与任何实例都没有关联。 您需要创建该类的实例: 然后,您可以调用实例

  • 我有一个类,其中有一些静态方法和一些非静态方法,所以当我试图从静态方法访问非静态方法时,我会遇到一个著名的错误。每当我搜索这个论坛,我得到的解决方案,当有两个类,从一个你试图达到另一个。我的问题是,如果它们在同一个类中,如何从静态方法调用非静态方法? 我试着用 但是我的方法包含发送Intent和finish(),所以如果我创建的对象不是finish,就不起作用。

  • 我是Java和OOD的新手&一直在尝试为一个小的JDBC项目编写一些测试,但在让测试进入绿色光时遇到了一些问题。这就是我开始的地方,玩了很多次都没有效果。 下面是我的测试: 我的刀: 我的客户类:

  • 问题内容: 我无法编译以下代码: 出现以下错误: 无法从静态内容引用非静态方法calcArea(int,int) 这是什么意思?我该如何解决该问题..? 编辑: 根据您的建议,我创建了一个新的test()实例,如下所示: 这样对吗?如果我这样做有什么区别… 问题答案: Nanne提出的建议绝对可以解决您的问题。但是,我认为如果现在就养成习惯,在学习Java的早期阶段,尝试尽可能少地使用静态方法(例