【发布时间】:2010-01-18 10:33:51
【问题描述】:
嗨 我是 java 的菜鸟,我想在另一个函数中访问一个函数的局部变量。 但是java是否支持函数中的静态变量? 如果不是,那么如何访问该变量。我不想将该局部变量作为 calss 的实例变量。
谢谢
【问题讨论】:
嗨 我是 java 的菜鸟,我想在另一个函数中访问一个函数的局部变量。 但是java是否支持函数中的静态变量? 如果不是,那么如何访问该变量。我不想将该局部变量作为 calss 的实例变量。
谢谢
【问题讨论】:
也许我完全错了,但这项任务听起来像是闭包概念的一部分(即使 authod 没有任何相关的意思)。
所以,java的方式是:
public void foo () {
final SomeClass obj = new SomeClass ();
Bar b = new Bar () {
public void bar () {
obj.doSmth ();
}
};
}
当然,这个具体的代码只是一个无用的例子。
【讨论】:
在需要访问变量的方法的声明中,将其作为参数包含在内。
public int myMethod(int i){
System.out.println(i);
}
然后将变量作为参数传递给该方法。
public static void main(String [] args){
int myInt = 5;
myMethod(myInt);
}
【讨论】:
在 Java 中,你说的是“方法”而不是“函数”。
“函数中的静态变量”是什么意思?如果你的意思是C/C++ style static local variable,那么你必须使用类或实例变量,这取决于你的需要。
“本地”表示无法在其范围之外访问某些内容。所以你不能从方法体外部访问方法的局部变量,只是根据定义。
为什么不能使用类或实例变量?
【讨论】:
这取决于但有几种方法。
如果你在同一个对象中,你可以使用一个普通的成员变量,如果你在对象之间调用,你可以只为那个变量提供 getter 和 setter。或者,如果这两种方法相关,只需提供值作为参数。
当您在一个函数和另一个函数之间谈论时,不清楚您是指同一类中的方法还是不同类之间的方法。也许如果你在考虑 Java 中的函数而不是类、对象和方法,你会发现复习基本的面向对象的东西也很有用。我知道当我从过程编程过渡到面向对象编程时,我经常遇到这个问题。现在是不久前了,但 this series of tutorials 在这方面帮了我很多忙。
【讨论】:
不,您不能在 java 中的方法中声明静态变量。
并且您不能从另一种方法中的一种方法访问变量。相反,如果它是一个对象,您可以通过方法调用将其引用发送给其他方法。如果它是一个原语,那么你可以发送它的值。
【讨论】: