java中的断言

java中的断言,java,assert,Java,Assert,我已经创建了一个断言行,如下所示 String title = "A"; int year = 2009; String director = "Zebra"; VideoObj a=新的VideoObj(头衔、年份、董事) 为什么会失败?? 下面是相等的方法 public boolean equals(Object thatObject) { if (!(thatObject instanceof VideoObj)) return false; Vi

我已经创建了一个断言行,如下所示

String title = "A";
int year = 2009;
String director = "Zebra";    
VideoObj a=新的VideoObj(头衔、年份、董事)

为什么会失败?? 下面是相等的方法

public boolean equals(Object thatObject) {
    if (!(thatObject instanceof VideoObj))
        return false;
    VideoObj that = (VideoObj) thatObject;
    return ((_title.equals(that.title())) && (_director.equals(that.director())) && (_year == that.year()));
}
但是下面的声明

Assert.assertFalse(a.equals(new VideoObj(title, year, director + "1")));
没有失败吗?
有人能解释为什么第一个assert语句失败而不是第二个吗?

您可能想在以下内容中使用
&&
而不是
|

    return ((_title.equals(that.title())) || (_director.equals(that.director())) || (_year == that.year()));
否则,你会检查头衔、导演或年份是否相同,而不是所有人都相同。

应该这样吗 ((_title.equals(that.title())&&(_director.equals(that.director())&&(_year==that.year()))


如果标题、年份和导演相等,则两个视频相等,而不是其中只有一个是…

请展示一个简短但完整的程序来演示您的问题。特别是,这是一个奇怪的等式方法。你的
equals
方法是非常错误的。这是我从我的教授那里得到的。谓词在更正对
&&
的更改后是否仍然无法提供预期的结果?为什么这一年与等价性没有密切关系?它现在起作用了,但如果它是一个| | | | |年,它不是经历了吗????
    return ((_title.equals(that.title())) || (_director.equals(that.director())) || (_year == that.year()));