【问题标题】:Java passing arrays into object issueJava将数组传递到对象问题
【发布时间】:2013-01-30 12:58:43
【问题描述】:

在java中,如何将数组传递给类。每当我这样做时,我都会收到“无法在静态上下文中引用非静态变量”。该阵列有 10 个位置。我将数组声明为。

编辑:这是一个更清晰的例子吗?我还应该注意,我的老师完全忽略了什么是静态的,以及它是如何使用的,声称程序员理解它并不重要。

编辑 2:我设法让它工作了 sorter sort = new sorter(); 并将其变成 static sorter sort = new sorter(); 这到底对我的程序做了什么,这是否被认为是一个错误的修复?

主要

public class example {

    public static void main(String[] args) {

    int[] test = new int[10];
     sorter sort = new sorter();

     sort.GetArray(test);


    }
}

public class sorter {

    int[] InputAR = new int[10];

    public sorter
    {

    }

        public void GetArray(int[] a)
    {


    }
}

【问题讨论】:

  • 您的代码不完整,无法回答您的问题。 看起来您的问题是您试图从静态方法访问实例变量,这是不可能的。
  • 好吧,问题不在于您显示的代码。它必须在您未显示的代码中。请发布一个简短但完整的示例来说明问题。
  • "Can not refrence a non-static varible in a static context"---> 表示您正在尝试在静态方法中使用非静态(实例变量)的东西。
  • 您的老师声称静态不是一个需要理解的重要概念?哇,这是什么老师啊?

标签: java arrays class static


【解决方案1】:

你没有放足够多的代码,我猜是:

  • 您声明了一个非静态字段(例如 int[] test = new int[10] 而不是 static int ...)
  • sort.getArray 位于 main 或另一个静态方法中。

这是不可能的,因为非静态字段需要一个具体的对象才能存在。

【讨论】:

  • 应该在哪里。 sort.getarray 是?
【解决方案2】:

这是因为您在某些static 方法中调用sort.GetArray(test)。您需要将数组变量设为static 以便访问它。

只需阅读此article,您就会了解您的代码存在的问题。

【讨论】:

  • @user1809295 查看您的代码,当您在main 中声明数组变量时,它隐式地变成了一个静态变量,同样当您声明sort 实例static 时,它也解决了您的@ 987654328@ 异常。
【解决方案3】:

"不能在静态上下文中引用非静态变量"

您的此错误与传递数组或其他内容无关。在您的代码中的某处,或者可能在 public void GetArray(int[] a) 内,您引用​​了 static 成员,但具有非静态上下文。

使变量non-static,或方法static,反之亦然。

更多信息请参考This Link

【讨论】:

    猜你喜欢
    • 2010-10-22
    • 2018-08-28
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2020-01-21
    • 2020-02-23
    • 2012-12-03
    • 2017-01-23
    相关资源
    最近更新 更多