【问题标题】:How to access a variable from one function to another function in java ? Can that local variable be made static in a function? [duplicate]java - 如何从一个函数访问变量到另一个函数?可以在函数中将该局部变量设为静态吗? [复制]
【发布时间】:2010-01-18 10:33:51
【问题描述】:

可能重复:
How do I create a static local variable in Java?

嗨 我是 java 的菜鸟,我想在另一个函数中访问一个函数的局部变量。 但是java是否支持函数中的静态变量? 如果不是,那么如何访问该变量。我不想将该局部变量作为 calss 的实例变量。

谢谢

【问题讨论】:

标签: java core


【解决方案1】:

也许我完全错了,但这项任务听起来像是闭包概念的一部分(即使 authod 没有任何相关的意思)。

所以,java的方式是:

public void foo () {
   final SomeClass obj = new SomeClass ();
   Bar b = new Bar () {
      public void bar () {
         obj.doSmth ();
      }
   };
}

当然,这个具体的代码只是一个无用的例子。

【讨论】:

    【解决方案2】:

    在需要访问变量的方法的声明中,将其作为参数包含在内。

    public int myMethod(int i){
        System.out.println(i);
    }
    

    然后将变量作为参数传递给该方法。

    public static void main(String [] args){
        int myInt = 5;
        myMethod(myInt);
    }
    

    【讨论】:

    • 这样,可以得到变量的“内容”,而不是变量本身。例如,不能为其分配新值。
    【解决方案3】:
    1. 在 Java 中,你说的是“方法”而不是“函数”。

    2. “函数中的静态变量”是什么意思?如果你的意思是C/C++ style static local variable,那么你必须使用类或实例变量,这取决于你的需要。

    3. “本地”表示无法在其范围之外访问某些内容。所以你不能从方法体外部访问方法的局部变量,只是根据定义。

    4. 为什么不能使用类或实例变量?

    【讨论】:

    • 你的意思是类(静态)还是实例字段?
    【解决方案4】:

    这取决于但有几种方法。

    如果你在同一个对象中,你可以使用一个普通的成员变量,如果你在对象之间调用,你可以只为那个变量提供 getter 和 setter。或者,如果这两种方法相关,只需提供值作为参数。

    当您在一个函数和另一个函数之间谈论时,不清楚您是指同一类中的方法还是不同类之间的方法。也许如果你在考虑 Java 中的函数而不是类、对象和方法,你会发现复习基本的面向对象的东西也很有用。我知道当我从过程编程过渡到面向对象编程时,我经常遇到这个问题。现在是不久前了,但 this series of tutorials 在这方面帮了我很多忙。

    【讨论】:

      【解决方案5】:

      不,您不能在 java 中的方法中声明静态变量。

      并且您不能从另一种方法中的一种方法访问变量。相反,如果它是一个对象,您可以通过方法调用将其引用发送给其他方法。如果它是一个原语,那么你可以发送它的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-24
        • 2012-05-21
        • 2017-03-26
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        相关资源
        最近更新 更多