1

これ:

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);
4

2 に答える 2

1

試してみるとどうなりますか:

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

たとえば、キャストしますか?

于 2009-03-14T23:10:28.547 に答える
0

おそらく、コードのどこかで警告が表示されます。コンパイラに耳を傾けてください。

-Xlint詳細を取得するには、 (特に) を javac コマンドラインに追加-Xlint:uncheckedします (または、開発環境で同等のことを行います)。

于 2009-03-16T12:39:35.910 に答える