奇怪的ClassCastException

时间:2009-03-14 23:05:00

标签: java generics exception type-inference classcastexception

此:

Timerange longest = Timerange.longest(breaks);
if (longest.durationInHours() >= MIN_FREE_HOURS)
    return true;

没问题。

但是这个:

if (Timerange.longest(breaks).durationInHours() >= MIN_FREE_HOURS)
    return true;

给出:

java.lang.ClassCastException

你知道为什么?!

为简单起见:

public static final <T extends Timerange> T longest(List<T> timeranges) {
    return timeranges.get(0);
}

符:

List<Duty> breaks = week.substract(weekDuties);

2 个答案:

答案 0 :(得分:1)

如果你尝试会发生什么:

if (((Timerange) Timerange.longest(breaks)).durationInHours() >= MIN_FREE_HOURS)
    return true;

例如,施展它?

答案 1 :(得分:0)

据推测,您的代码中某处会收到警告。听取你的编译器。

要获取详细信息,请将-Xlint(特别是-Xlint:unchecked)添加到您的javac命令行中(或者使用您的开发环境)。