在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方法决定对象(参数)是否与类兼容。
对象的动态类型与类(静态类型)兼容,如果它扩展了类(静态类型是类)或实现了类(静态类型是接口)。