【发布时间】:2017-12-13 01:07:02
【问题描述】:
我正在使用以下方法从列表中删除重复的路径:
paths.removeAll(Collections.singleton(path));
我在上面运行来自 TestClass.java 的代码,运行 Junit 测试用例。
Equals 和 hashcode 方法考虑路径对象内的字符串值。
Equals 方法在下面的代码中失败。
if (getClass() != obj.getClass())
return false;
即使路径列表中的所有对象都是相同类型的路径。上面的代码无法匹配类名。我看到它将类名作为 junit 类名 TestClass$5$1$1 作为第一个值,将 TestClass$5$1$2 作为第二个值,因此它失败了。
我在这里做错了什么吗?提前致谢。
我正在使用以下代码创建路径列表。
Paths paths = new Paths(){
{
setPaths(new ArrayList<Path>(){
{
add(new Path(){
{
setValue("c:\\\\test");
}
});
add(new Path(){
{
setValue("c:\\\\test1");
}
});
add(new Path(){
{
setValue("c:\\\\test1");
}
});
}
});
}
};
如果我通过普通 java 代码创建列表“路径”,equal 方法可以正常工作并删除重复路径。
【问题讨论】:
-
什么是
Path?你是如何实例化它的?请发帖minimal reproducible example。 -
Path 是其中包含字段值的类。等于和哈希码写在这个字段上。
-
您能否显示为
path变量赋值的行?以及创建它引用的对象的行? -
我知道这是一门课。我们需要查看该类以及您如何实例化它。
-
添加相关代码后,可以投票重新开启