为什么我的函数返回真,即使我的一个条件是错误的?



在Java中,我有两个函数一起工作以返回布尔条件。两者都是从具有继承类Serie和Filme的类Programa中获取对象。只有当试图创建的对象具有相同的名称+相同的类别+来自一个已经存在的相同类时,它们才应该返回true,但是当我具有相同的名称,在其他类中具有相同的类别时,他仍然返回true。

示例:姓名:Doe,类别COMEDIA, Serie我不能"名称:Doe,类别COMEDIA, film ">

你能看出我错在哪里了吗?

public boolean seExiste(Programa programa) {
for (Programa y : this.programa) {
if (Serie.class.isInstance(y) && y.getNome().equals(programa.nome)
&& y.getCategoria().equals(programa.categoria)) {
return true;

} if (Filme.class.isInstance(y) && y.getNome().equals(programa.nome)
&& y.getCategoria().equals(programa.categoria)) {
return true;
}                   
}
return false;
}
public void cadastrar(Programa programa) {
if (!seExiste(programa)) {
// System.out.println(programa.hashCode());
this.programa.add(programa);
} else {
System.err.println("ERROR");
}
}

这就是你正在做的。当您返回true时,您将不知道它是Filme还是Serie。也许您应该返回值为1、2或-1的int,或者使用enum来表示求值的内容。

public boolean seExiste(Programa programa) {
for (Programa y : this.programa) {

// here is the common condition.
// this must be true to return true.
// otherwise the loop continues. Notice the ! that inverts the expression.
if (!(y.getNome().equals(programa.nome)
&& y.getCategoria().equals(programa.categoria))) {
continue;  // skip next if and continue loop
}
// if the the categoria and nome match then check the instance.   
if (Filme.class.isInstance(y) || Serie.class.isInstance(y)) {
return true;
}           
}
return false;
}

Filme和Serie之间有继承性吗?在这种情况下,如果一个Serie是一个Filme (Serie扩展了Filme),那么series .class. isinstance (filmeObject)将始终为false,而Filme.class. isinstance (serieObject)将始终为true。

isInstance方法决定对象(参数)是否与类兼容。

对象的动态类型与类(静态类型)兼容,如果它扩展了类(静态类型是类)或实现了类(静态类型是接口)。

相关内容

  • 没有找到相关文章

最新更新