为什么我会在java中使用以下语句对“类型字符串的方法未定义”:
if(book.getTitle().getAuthor().getAward()){..}
错误是针对getAward()
当我将一个类作者定义为:
class Author {
private String name;
private boolean award;
public Author(String n, boolean p){
name=n;
award=p;
}
public String getName(){return name;}
public boolean getAward(){return award;}
} 可能错误来自另一个定义(除了作者?)
答案 0 :(得分:0)
将您的getAuthor()
方法实施更改为
public Author getAuthor(){
return new Author(); // or some author that is set in your object
}
在此,你可以执行另一种方法。
if(book.getTitle().getAuthor().getAward())
如果作者类有方法getAward
public class Author{
public boolean getAward(){ // implementation
}
}
答案 1 :(得分:0)
您需要将getAuthor
方法更改为
public Author getAuthor(){
return author;
}
如果你想要authors
award
,那么你应该调用
book.getAuthor().getAward()
答案 2 :(得分:0)
实际上让作者在另一个类中并返回一个字符串。 getTitle来自第三个类并返回字符串。本书来自第四节课。
然后答案是显而易见的。
您正试图就调用getAuthor()
的结果致电getTitle()
。但getTitle()
的结果是String
...而String
没有getAuthor()
方法。
这正是编译错误告诉你的。
事实上,你可能应该写:
if(book.getAuthor().getAward()){..}
然后更改getAuthor()
以返回Auteur
对象...而不是作者的姓名。
一本书(Oevre)有一个作者,但标题(String)没有。