在另一个私有函数中访问私有函数的变量

时间:2012-09-28 09:47:09

标签: java netbeans-6.9

鉴于以下代码,如何在myInt的{​​{1}}中使用private void jButton1

private void jButton2

5 个答案:

答案 0 :(得分:1)

你做不到。这些是局部变量,仅在方法调用期间存在。

如果你想在另一个方法中使用该值,你必须通过参数传递它,或者使它成为实例(或静态,如果你必须)变量,这样它就是对象状态的一部分。

基本上,你的jButton1ActionPerformed方法目前没有用处 - 它为一个局部变量赋值,然后立即超出范围。

顺便说一句,如果您不熟悉Java的基础知识,我会强烈建议您在控制台应用程序中学习它们,在这些应用程序中您不需要处理用户界面的复杂性。学习该语言的基础知识,然后在用户界面上启动一些核心库(集合,IO等)然后

答案 1 :(得分:1)

将myInt传递给某个字段。

private int myInt;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    myInt = (Integer)jSpinner1.getValue();
}


private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    int b = 0;
    int c=myInt;
  ...
}

答案 2 :(得分:0)

即使您拥有方法public,也无法在外部访问它的局部变量。它的范围仅限于定义方法..

最好将该变量声明为类中的字段..

方法myInt中的变量jButton1ActionPerformed应声明为实例字段,否则不会使用该变量..您没有在任何地方使用它。

答案 3 :(得分:0)

唯一的方法是将局部变量作为参数传递给另一个私有方法。 局部变量(在方法中声明的变量)仅限于该方法。除非您将它们作为参数传递或返回它们,否则您无法直接在其他方法中使用它们。 是的,如果它是私人/公共/受保护/默认/静态标记方法无关紧要。

答案 4 :(得分:0)

变量与Variable Scope相关联。在这种情况下,myInt在一个方法范围内声明,然后您尝试从不同的方法范围访问它。这是不可能的。

要绕过它,您必须将myInt变量提升为Global(Class)变量,如下所示:

private int myInt;
...
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    this.myInt = (Integer)jSpinner1.getValue();
}
...

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   int b = 0;
   int c= this.myInt;
...

这意味着在类范围内声明的任何内容都可以访问此变量,这意味着现在可以从所有方法访问您的变量。