相关疑难解决方法(0)

无法从静态上下文引用非静态变量

我写了这个测试代码:

class MyProgram
{
    int count = 0;
    public static void main(String[] args)
    {
        System.out.println(count);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它给出了以下错误:

Main.java:6: error: non-static variable count cannot be referenced from a static context
        System.out.println(count);
                           ^
Run Code Online (Sandbox Code Playgroud)

如何让我的方法识别我的类变量?

java variables compiler-errors non-static

272
推荐指数
7
解决办法
61万
查看次数

"无法从静态上下文引用非静态方法"错误

我有一个名为的类Media,它有一个名为的方法setLoanItem:

public void setLoanItem(String loan) {
    this.onloan = loan;
}
Run Code Online (Sandbox Code Playgroud)

我试图从以GUI下列方式命名的类中调用此方法:

public void loanItem() {
    Media.setLoanItem("Yes");
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误

非静态方法setLoanItem(java.lang.String)不能从静态上下文引用

我只是试图onloanMedia类中的变量更改为"是" GUI.

我看过其他主题有相同的错误消息,但没有点击!

java static compiler-errors

69
推荐指数
2
解决办法
34万
查看次数

无法从java 8流中的静态上下文引用非静态方法

我正在讨论来自http://www.concretepage.com/java/jdk-8/java-8-unaryoperator-binaryoperator-example的例子.

我发现真正令人困惑的是,当我在形成收集器时错误地将错误的类型放入泛型中时,java编译器给了我一个非常误导性的消息:

无法从静态上下文引用非静态方法

我的错误与现实中的静态vs实例上下文无关:

Map<String, Map<Integer, Integer>> mapOfStudents = list.stream().collect(Collectors.groupingBy(Student::getClassName,
            Collectors.toMap(Student::getName, Student::getAge)));
Run Code Online (Sandbox Code Playgroud)

我的错误在于泛型返回类型.当我纠正它并把:

Map<String, Map<String, Integer>> mapOfStudents
Run Code Online (Sandbox Code Playgroud)

一切都恢复正常.

有人可以解释这种令人困惑的错误信息背后的原因吗?我确信这是一个很好的,但我没有抓住它.

编辑:

~$ java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
Run Code Online (Sandbox Code Playgroud)

java intellij-idea java-8

29
推荐指数
1
解决办法
2万
查看次数

非静态方法不能从静态上下文中引用

首先是一些代码:

import java.util.*;
//...

class TicTacToe 
{
//...

public static void main (String[]arg) 
{ 

    Random Random = new Random() ; 
    toerunner () ; // this leads to a path of 
                   // methods that eventualy gets us to the rest of the code 
} 
//... 

public void CompTurn (int type, boolean debug) 
{ 
//...

        boolean done = true ; 
        int a = 0 ; 
        while (!done) 
        { 
            a = Random.nextInt(10) ;
            if (debug) { int i = 0 ; while (i<20) …
Run Code Online (Sandbox Code Playgroud)

java static

17
推荐指数
1
解决办法
10万
查看次数

无法从类型Two对静态方法fxn(int)进行静态引用

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

我无法理解我的代码有什么问题.

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

线程"main"中的异常java.lang.Error:未解决的编译问题:无法对类型为2的非静态方法fxn(int)进行静态引用

java

16
推荐指数
3
解决办法
13万
查看次数

为什么我只能从静态函数访问静态成员?

我在类中有一个静态函数.

每当我尝试使用非静态数据成员时,我都会遇到编译错误.

非静态字段,方法或属性成员需要对象引用

为什么它表现得那样?

c# static-methods

14
推荐指数
2
解决办法
9483
查看次数

Android:无法从静态上下文引用非静态方法.困惑?

我对Java和编程非常陌生.我写了一个基本程序,用来添加用户输入的2个数字并将它们添加起来并在输出框中显示它们,但是我得到"非静态方法"setText(java.lang.CharSequence)'无法引用从静态上下文",但我不知道静态的东西是什么

    private void onClick(View v){
    EditText input1 = (EditText) findViewById(R.id.input1);
    double calc1 =  Double.parseDouble(String.valueOf(input1));
    EditText input2 = (EditText) findViewById(R.id.input2);
    double calc2 = Double.parseDouble(String.valueOf(input2));
    double total = calc1 + calc2;
    String result = Double.toString(total);
    EditText output1 = (EditText)findViewById(R.id.output);
    EditText.setText(result);
    }
Run Code Online (Sandbox Code Playgroud)

给出错误的行:

    EditText.setText(result);
Run Code Online (Sandbox Code Playgroud)

对不起,如果我非常无能,但我搜索了,我真的不明白如何解决它.谢谢.

java android

11
推荐指数
1
解决办法
3万
查看次数

什么是"静态"?

我开始用Java编程.

public static void main(String[]args)
Run Code Online (Sandbox Code Playgroud)

一本书说我应该在这种情况下使用静态,但没有明确说明为什么我应该或它意味着什么.

你能澄清一下吗?

java static

10
推荐指数
2
解决办法
948
查看次数

如何在Java中编辑来自另一个类的数组

我创建了一个2d数组(用作游戏板),在另一个类中我想获取我的数组并能够对其执行操作.

我的数组定义(在课堂上PlayingBoard):

public char[][] myGrid = new char[12][12];
Run Code Online (Sandbox Code Playgroud)

现在我想从我项目中的其他类操作这个数组.我试着打电话给该网格中它的类没有定义

int i, j;
for(i = 0; i < 12; i++) {
    for(j = 0; j < 12; j++) {
        PlayingBoard.myGrid[i][j] = 'x';
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

myGrid无法从静态上下文引用非静态变量

如何myGrid从第二堂课中参考,编辑和操作?

java arrays static

8
推荐指数
1
解决办法
1994
查看次数

无法从静态context-Main方法引用非静态字段

我的Spring-Boot应用程序中有2个类:

-任务

-Runner

runner类包含我的main方法,我尝试从Tasks类中调用一个方法:

亚军:

@Component
public class Runner {

    Tasks tasks;    

    @Autowired
    public void setTasks(Tasks tasks){
        this.tasks=tasks;
    }

    public static void main(String[] args){

    //error being caused by below line
    tasks.createTaskList();

    }
Run Code Online (Sandbox Code Playgroud)

任务类:

@Service
public class Tasks {

    public void createTaskList() {

    //my code
    }


    //other methods 


}
Run Code Online (Sandbox Code Playgroud)

在我的Runner中,当我尝试在Tasks类中调用createTaskList()方法时,我收到以下错误:

Non static field 'tasks' cannot be referenced from a static context
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

java methods static program-entry-point class

7
推荐指数
1
解决办法
2万
查看次数