【问题标题】:How to set a double method equal to a value in a static method?如何将双精度方法设置为等于静态方法中的值?
【发布时间】:2014-10-22 16:32:30
【问题描述】:

我有一个名为getX1() 的方法,它从不同的类中获取数据:

    public double getX1(){
    double x1 = getIntent().getExtras().getDouble("s_xd2");

    return x1;
}

我想将它设置为等于静态方法中的值。

    public static double[] xWerte() {
    double x1 = getX1();

    return new double[] {x1,2.0,3.0,4.0,5.0,6.0,7.0};
}

但它不会让我......它是如何工作的?

上面写着:不能从静态上下文中引用非静态方法“getX1()”

【问题讨论】:

    标签: java android methods static double


    【解决方案1】:

    它说:不能从静态上下文中引用非静态方法 'getX1()'

    是的 - 这与创建数组或类似的东西无关

    问题在于getX1() 是一个instance 方法——它需要对声明类的实例进行操作。您的xWerte 方法是一个静态 方法,因此它自然没有要操作的实例。

    选项:

    • xWerte也成为实例方法
    • xWerte 一个类的实例以使用(例如,将其作为参数传入)
    • 使getX1 成为静态方法(可能很棘手,考虑到getIntent 调用)

    【讨论】:

    • 选项 1:不能这样做,因为它必须是静态的 选项 2:不知道它是如何工作的(编码业余爱好者) 选项 3:可能很难:(
    • 是否有其他选项可以从与静态一起使用的不同类中获取数据?
    • @Feuer1978:现在是停止尝试编写复杂应用程序并学习 Java 基础知识的好时机。您的第一条评论表明您并不真正熟悉该语言,这意味着您将很难解决这个问题......所以您应该花时间正确学习该语言,此时您'希望有更好的机会修复它。从根本上说,如果您需要获取基于实例的信息(就像您所做的那样),那么 something 将需要知道相关实例。
    • @Feuer:这对特定问题有好处,但您确实应该更系统地学习该语言的基础知识。否则,您将永远处于困境中。
    • @Feuer:我给你的不仅仅是提示。我给了你三个选项,并准确地解释了问题所在。如果这还不够,那么这是一个明确的信号,您应该在基础知识上投入更多时间。
    【解决方案2】:

    静态方法只能调用静态方法。这是因为静态方法不属于该类的任何特定实例,但非静态方法绑定到该类的每个实例。因此,当您尝试从静态方法调用 getX1() 时,它不知道从哪个类的实例调用该方法。要解决这个问题,要么将方程放入静态方法中,要么将 getX1() 设为静态。

    【讨论】:

    • 静态方法可以调用实例方法——只是你需要提供一个实例来调用它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    相关资源
    最近更新 更多