【问题标题】:Get constructor's parameter as a method's variable获取构造函数的参数作为方法的变量
【发布时间】:2013-12-17 19:39:45
【问题描述】:
class Param implements Runnable {
int c;

public Param(int a, int b){
    c = a+b;
}

public void run(){
    // System.out.println(a); // <<<<----What I'm going to do. it's impossible. 
}

 }

public class ParamTest {
public static void main(String args[]){
    Runnable r = new ThreadParam(10,20);
    new Thread(r).start();  

}   
} 

在上面的代码中,如何打印“a”的值?我的目标是,当我在 main 方法中调用 Runnable r = new ThreadParam(10,20) 时,我想打印 "a" --> 10 的值。这是不可能的吗?如果我在 run() 方法中声明int a,“a”的结果是“0”。我想要结果“10”。我该怎么做?

【问题讨论】:

  • 更改您的设计并添加一个实例变量来存储a 的值。
  • @RahulTripathi 那是我的问题。但我遇到了另一个问题:这个问题。请考虑一下,谢谢。

标签: java


【解决方案1】:

局部变量和参数只存在于声明它们的函数内部。
您需要将其存储在类中的一个字段中,就像您存储 c 一样。

【讨论】:

  • 声明int a 上课?或方法?那么它的结果是 0。我怎样才能打印 10?
  • @user3100921:需要在类中声明,然后在构造函数中赋值。类中的int a 和构造函数中的int a 是两个不同且不相关的变量。
【解决方案2】:

创建另一个实例变量来保存a 值:

int a;

并在您的构造函数中,将其复制下来:

this.a = a;

然后你可以通过其他方法访问它。

【讨论】:

  • int a的正确位置在哪里?我想打印“a”的值不是 0,而是 10。这不可能吗?
  • 在你的另一个实例变量c旁边声明它。
猜你喜欢
  • 2016-01-24
  • 2019-03-03
  • 2014-05-09
  • 1970-01-01
  • 2011-09-04
  • 2021-10-09
  • 1970-01-01
  • 2018-06-28
相关资源
最近更新 更多