la méthode n'est pas définie pour le type chaîne de caractères
pourquoi aurais-je ", la méthode n'est pas définie pour le type chaîne de caractères" en java avec cette déclaration:
if(book.getTitle().getAuthor().getAward()){..}
l'erreur est pour getAward()
lorsque j'ai défini une classe Auteur comme ceci:
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;}
}
Peut l'erreur vient d'une autre définition (autres que l'Auteur?)
- Ce n'
getTitle()
retour? Ce n'getAuthor()
retour? - getAuthor() retourne une chaîne de caractères et non pas un Auteur de l'objet.
- n'est-ce pas dupliquer de stackoverflow.com/questions/17810669/...
- en fait obtenir de l'Auteur est dans une autre classe et retourne une chaîne de caractères. getTitle est à partir d'une classe de troisième et renvoie la chaîne de caractères ainsi. Le livre est d'une quatrième classe.
Vous devez vous connecter pour publier un commentaire.
Alors la réponse est évidente.
Que vous tentez de joindre
getAuthor()
sur le résultat de l'appelgetTitle()
. Mais le résultat degetTitle()
est unString
... etString
n'ont pas degetAuthor()
méthode.Et c'est exactement ce que l'erreur de compilation est vous dire.
En fait, vous devriez probablement écrire:
puis changer
getAuthor()
pour retourner leAuteur
objet ... plutôt que le nom de l'auteur.Un livre (Oevre) est un auteur, mais un titre (Chaîne de caractères) ne fonctionne pas.
changer votre
getAuthor()
méthode mise en œuvre pour queEt sur qui vous pouvez jouer une autre méthode.
if(book.getTitle().getAuthor().getAward())
si l'Auteur de la classe des méthodesgetAward
Vous avez besoin de changer votre
getAuthor
méthode pouret si vous voulez le
authors
award
, alors u doit invoquerbook.getAuthor().getAward()