Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么没有';乔达时间间隔是否具有可比性?_Java_Jodatime - Fatal编程技术网

Java 为什么没有';乔达时间间隔是否具有可比性?

Java 为什么没有';乔达时间间隔是否具有可比性?,java,jodatime,Java,Jodatime,我一直在尝试生成一个树状图,用于在年龄分组集中存储个人实体,其中间隔描述年龄组的边界。当我尝试执行此操作时,出现以下错误 java.lang.ClassCastException: org.joda.time.Interval cannot be cast to java.lang.Comparable 将Interval替换为DateTime效果很好,但是必须使用映射键作为输入来创建Interval 为什么JodaInterval不具有可比性?可以通过多种方式对Interval进行比较。In

我一直在尝试生成一个
树状图
,用于在年龄分组集中存储个人实体,其中
间隔
描述年龄组的边界。当我尝试执行此操作时,出现以下错误

java.lang.ClassCastException: org.joda.time.Interval cannot be cast to java.lang.Comparable
Interval
替换为
DateTime
效果很好,但是必须使用映射键作为输入来创建
Interval


为什么Joda
Interval
不具有可比性?

可以通过多种方式对Interval进行比较。Interval的javadoc明确指出:

持续时间由ReadableDuration单独表示。因此,间隔是不可比较的。要比较两个时间间隔的长度,您应该比较它们的持续时间

间隔也可以转换为ReadablePeriod

一个较长的解释,考虑下面的间隔并定义它们应该如何排序:

10:00 - 12:00
11:00 - 13:00
11:00 - 12:00
 9:00 - 10:00
 9:00 - 13:00
是否应按持续时间(时间跨度)排序

还是在开始的时候

 9:00 - 10:00
 9:00 - 13:00
10:00 - 12:00
11:00 - 13:00
11:00 - 12:00
还是按开始时间,然后按持续时间

 9:00 - 10:00  (1 hours)
 9:00 - 13:00  (4 hours)
10:00 - 12:00  (2 hours)
11:00 - 12:00  (1 hours)
11:00 - 13:00  (2 hours)
 9:00 - 10:00  (1 hours)
11:00 - 12:00  (1 hours)
10:00 - 12:00  (2 hours)
11:00 - 13:00  (2 hours)
 9:00 - 13:00  (4 hours)
还是在结束时间,然后是持续时间

 9:00 - 10:00  (1 hours)
 9:00 - 13:00  (4 hours)
10:00 - 12:00  (2 hours)
11:00 - 12:00  (1 hours)
11:00 - 13:00  (2 hours)
 9:00 - 10:00  (1 hours)
11:00 - 12:00  (1 hours)
10:00 - 12:00  (2 hours)
11:00 - 13:00  (2 hours)
 9:00 - 13:00  (4 hours)
正如您所见,“自然顺序”没有一个明确的定义,它定义了:

此接口对实现它的每个类的对象施加总顺序。这种排序称为类的自然排序,而类的
compareTo
方法称为其自然比较方法


间隔可以通过多种方式进行比较。Interval的javadoc明确指出:

持续时间由ReadableDuration单独表示。因此,间隔是不可比较的。要比较两个时间间隔的长度,您应该比较它们的持续时间

间隔也可以转换为ReadablePeriod

一个较长的解释,考虑下面的间隔并定义它们应该如何排序:

10:00 - 12:00
11:00 - 13:00
11:00 - 12:00
 9:00 - 10:00
 9:00 - 13:00
是否应按持续时间(时间跨度)排序

还是在开始的时候

 9:00 - 10:00
 9:00 - 13:00
10:00 - 12:00
11:00 - 13:00
11:00 - 12:00
还是按开始时间,然后按持续时间

 9:00 - 10:00  (1 hours)
 9:00 - 13:00  (4 hours)
10:00 - 12:00  (2 hours)
11:00 - 12:00  (1 hours)
11:00 - 13:00  (2 hours)
 9:00 - 10:00  (1 hours)
11:00 - 12:00  (1 hours)
10:00 - 12:00  (2 hours)
11:00 - 13:00  (2 hours)
 9:00 - 13:00  (4 hours)
还是在结束时间,然后是持续时间

 9:00 - 10:00  (1 hours)
 9:00 - 13:00  (4 hours)
10:00 - 12:00  (2 hours)
11:00 - 12:00  (1 hours)
11:00 - 13:00  (2 hours)
 9:00 - 10:00  (1 hours)
11:00 - 12:00  (1 hours)
10:00 - 12:00  (2 hours)
11:00 - 13:00  (2 hours)
 9:00 - 13:00  (4 hours)
正如您所见,“自然顺序”没有一个明确的定义,它定义了:

此接口对实现它的每个类的对象施加总顺序。这种排序称为类的自然排序,而类的
compareTo
方法称为其自然比较方法


因为它没有
实现可比较的
?你的问题是什么?编写自己的实现ComparableYeah,这是技术原因,但我更喜欢“为什么不”,因为许多其他类都是可比的。除了Joda的开发人员之外,没有人能回答这个问题。关于反对票,我引用@PaulSonier(参见):“我不认为在SO档案中有一套基本问题有什么害处。初学者和专家也是如此;仅仅因为你发现一些“愚蠢”的东西并不意味着每个人都这么做。“因为它没有实现Compariable”
?你的问题是什么?写你自己的实现Compariable的包装器是的,这是技术原因,但我更喜欢“为什么不?”“,考虑到许多其他类别都具有可比性。除了Joda的开发者之外,没有人能回答这个问题。关于反对票,我引用@PaulSonier(见):“我不认为在SO档案中有一套基本问题有什么害处。初学者和专家也是如此;仅仅因为你发现了一些“愚蠢”的东西并不意味着每个人都会这么做。“Pierre,非常好地引用了javadoc。希望您喜欢我的附加组件。;-)谢谢,这很好地解释了问题。安德烈亚斯,天哪,你都做到了。你应该是这个答案的主人!谢谢你,皮埃尔先生,非常好地参考了javadoc。希望您喜欢我的附加组件。;-)谢谢,这很好地解释了问题。安德烈亚斯,天哪,你都做到了。你应该是这个答案的主人!谢谢你,先生。