-1

Java告诉我我的setter函数不存在......为什么?当我稍后在我的代码中设置作者时,我收到了错误消息,但我的标题设置器基本上采用相同的格式,没有返回错误。

class Author {
    String first_name;
    String last_name;
    int birth_year;
    int death_year;
    Author writer;

    Author () {}

    Author(String LastName, String FirstName) {
        first_name= FirstName;
        last_name = LastName;
    }

    Author getAuthor() {
        return writer;
    }
    void setAuthor(Author Writer) {
        Writer = writer;
    }
}
4

4 回答 4

2
  void setAuthor (Author Writer) {
    Writer = writer;
  }

这不会将writer字段设置为Writer参数的值。这会将Writer参数设置为writer字段的值。就目前而言,它是没有用的。你要

  void setAuthor (Author Writer) {
    writer = Writer;
  }
于 2013-11-13T21:43:00.927 回答
2

好吧,我很确定 Java 不会这么说。您应该始终粘贴确切的错误消息。

也就是说,您的 setter 用字段的值初始化 setter 的参数,而不是用参数的值初始化字段。

它应该是:

void setAuthor (Author Writer) {
    this.writer = Writer;
}

您应该尊重 Java 命名约定,并在命名上保持一致。变量以小写字母开头。它们通常包含下划线并且是驼峰式:firstName、、lastName等。并且this.xxx = xxx在设置器中以系统的方式使用可以避免这些类型的错误。

看起来你也有设计问题。为什么作者会有作者?一本书应该有作者。但是作者不应该有作者。

于 2013-11-13T21:43:48.260 回答
2
void setAuthor (Author Writer) {
    Writer = writer;
  }

Writer = writer;设置 LOCAL 变量WriterFROM 实例变量中的值writer

于 2013-11-13T21:45:30.077 回答
0

让他们像那样公开

public class Author {
      String first_name;
      String last_name;
      int birth_year;
      int death_year;
      Author writer;
      Author () {
      }
      Author(String LastName, String FirstName) {
        first_name= FirstName;
        last_name = LastName;
      }
      public Author getAuthor() {
        return this.writer;
      }
      public void setAuthor (Author Writer) {
        this.writer = Writer;
      }
    }
于 2013-11-13T21:43:43.097 回答