J'ai isolé l'erreur sur cette ligne: string.getClass() == jojo.getClass() Cette ligne ne doit-elle pas créer deux objets de classe, puis vérifier si elles (comme dans les deux références) pointent vers le même objet? Plutôt que de renvoyer une valeur false, le code ne sera pas exécuté.Erreur de compilation avec l'opérateur ==
public class Tester
{
public static void main(String[] args)
{
OreoJar jojo = new OreoJar(0);
OreoJar momo = new OreoJar(1);
String string = "Hello";
if (momo.getClass() == jojo.getClass())
{
System.out.println("Momo and jojo are of the same class");
}
if (string.getClass() == jojo.getClass())
{
System.out.println("String and jojo are of the same class");
}
}
}
public class OreoJar
{
int oreos;
public OreoJar(int oreos)
{
this.oreos = oreos;
}
public void count()
{
System.out.println(oreos + " oreos in this jar!");
}
}
Ce commentaire est une sorte de caché et je pense que la peine de mentionner, car il fait le plus de sens à un débutant (comme moi)
-Selon JLS « Il est une erreur de compilation s'il est impossible de convertir le type de l'un ou l'autre opérande au type de l'autre par une conversion de coulée "donc deux références des types A et B peuvent être comparées si, et seulement si, A peut être converti en B ou B peut être cast to A. - Patricia Shanahan
Si vous obtenez une erreur de compilation * * et vous avez besoin notre aide, alors le bon sens vous dit que vous devriez signaler cette erreur ici, non? –
Peut-être que vous devriez nous montrer ce qu'est l'erreur? – OldProgrammer
Rendre 'public OreoJar' à' private class OreoJar', puis réessayer? – Marcus