【问题标题】:how to set field in constructor in java [closed]如何在java中的构造函数中设置字段[关闭]
【发布时间】:2018-05-23 09:41:37
【问题描述】:

构造函数中有 3 个字段(名称、点数、武器),它们存储在 arrayList 中,我想从另一种方法修改名称。我该怎么做? 以及将“this”关键字作为参数传递是什么意思.. 我是java编程新手

我使用下面的代码来更新名称及其更改的名称,但点变为 0 并且武器“null”

public void modify(String name) {
    if(savedValues!= null && savedValues.size()>0) {
        for (int i = 0; i < savedValues.size(); i++) {
            if (savedValues.get(i).getName().equals(name)) {
                System.out.println("enter new name");
                Scanner scanner=new Scanner(System.in);
                //this.name = scanner.next();
                savedValues.set(i,this);
            }
        }
    }
}

【问题讨论】:

  • 请展示您解决此问题的最新无效尝试。
  • 嗨 vinS.. 谢谢回复..
  • this 是一个表示上下文的 java 关键字。如果你有一个对象Bar 和一个字段foo,但在某些时候你传入了一个也称为foo 的参数,this 澄清了你在说的是哪个foothis.foo 指的是在Bar 中定义的foo(声明为int foo; 或类似名称),而不是作为参数提供的foo。但是,如果您通过从Bar 调用属于Baz 的方法将thisBar 传递给第二个对象Baz,那么您将对Bar 的引用传递给Baz。现在你可以从Baz调用Bar的方法了。
  • 您的代码不完整,请列出整个类文件。我们至少需要看到构造函数和属性字段。

标签: java object methods constructor


【解决方案1】:

试试这样的

String newName = scanner.next();
savedValues.get(i).setName(newName);

savedValues.get(i) 将为您提供一个对象,并且您正在尝试更新该特定对象的名称属性。这是对运行代码的对象实例的引用。在这里使用它没有意义。

【讨论】:

  • 非常感谢...解决了
  • 很高兴知道。除了接受答案,你也可以投票:)
猜你喜欢
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
  • 2018-05-06
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 2013-08-26
相关资源
最近更新 更多