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;
}
}
答案 0 :(得分:1)
void setAuthor (Author Writer) {
Writer = writer;
}
这不会将writer
字段设置为Writer
参数的值。这会将Writer
参数设置为writer
字段的值。就目前而言,它毫无用处。你想要
void setAuthor (Author Writer) {
writer = Writer;
}
答案 1 :(得分:1)
void setAuthor (Author Writer) {
Writer = writer;
}
Writer = writer;
设置LOCAL变量Writer
FROM实例变量writer
答案 2 :(得分: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;
}
}
答案 3 :(得分:0)
好吧,我很确定Java没有说明这一点。您应始终粘贴确切的错误消息。
也就是说,你的setter用字段的值初始化setter的参数,而不是用参数的值初始化字段。
应该是:
void setAuthor (Author Writer) {
this.writer = Writer;
}
您应该尊重Java命名约定,并在命名中保持一致。变量以小写字母开头。它们包含一个下划线并且是camelCased:firstName
,lastName
等。并且在setter中以系统的方式使用this.xxx = xxx
可以避免这些类型的错误。
您似乎也遇到了设计问题。为什么作者会有作者?一本书应该有作者。但作者不应该有作者。