0

如何在不使用构造函数参数覆盖该变量的情况下获取变量的值?

例如:

public class Example {

String something = "";
Scanner sc = new Scanner(System.in);

  public Example()
  {

  }

  public Example(String something){
    this.something = something;
  }

  // Getter method
  public String getSomething() {
    return something;
  }

   public void changeValues() {
   System.out.println("Please change the string!");
   something = sc.next();
   Example set = new Example(something);
   }   
}//example


public class AnotherClass {
    Example test = new Example() 
    // I don't want to overwrite this so I set this to null
    String something2 = test.getSomething(); 
    // the above puts in a null reference instead of the text
  }

请记住,我不想在 AnotherClass 中为构造函数参数硬编码任何内容,并且 changeValues 方法必须保留在 Example 类中。

编辑:我用空格实例化了 something 变量,然后我提示用户应该将其存储在变量中,然后将其传递给构造函数。现在,我取回了原始的实例化空间而不是输入!

4

1 回答 1

0

你的问题没有多大意义。

  • 如果您在谈论“覆盖”,则构造函数不会被覆盖,因为它们不是继承的。

  • 如果您正在谈论Example“覆盖”something变量的构造函数,那么只需提供一个默认构造函数。但这不会改变任何事情,因为当您不显式初始化something时,无论如何都会默认初始化为null。事实上,当您使用null参数调用现有构造函数时,它不会破坏任何东西。


然后我们有你奇怪的changeValues()方法:

public void changeValues() {
    System.out.println("Please change the string! ")
    String foo = sc.next();
    Example set = new Example(foo);
}

实际上是为了:

  1. 提示用户
  2. 读取一个字符串
  3. 创建一个新的 Example 实例,然后
  4. 扔掉它!

你可能应该做的是:

    something = sc.next();
于 2012-12-14T05:21:22.427 回答