类不能转换为另一个类

时间:2017-12-18 22:12:03

标签: java casting compareto

我正在使用BST数据结构,我有一个名为 TimeInterval

的类
private TimeInterval StartTime,EndTime;

public TimeInterval(Time time,Time time2){
    StartTime = (TimeInterval) time; //cannot convert from Time to TimeInterval
    EndTime = (TimeInterval) time2; //cannot convert from Time to TimeInterval
}

@Override
public int compareTo(TimeInterval that) {

    if (StartTime.compareTo(that.EndTime) > 0) {
        return 1;
    }
    if (EndTime.compareTo(that.StartTime) < 0) {
        return -1;
    }
    return 0;
}

我该怎么做才能解决这个问题并让方法compareTo正常工作? 注意:我试图这样做但它没有工作:

private Time StartTime,EndTime;

public TimeInterval(Time time,Time time2){
    StartTime =  time;
    EndTime =  time2;
}

@Override
public int compareTo(TimeInterval that) {

    if (((TimeInterval)StartTime).compareTo((TimeInterval)that.EndTime) > 0) {
        return 1;
    }
    if (((TimeInterval)EndTime).compareTo((TimeInterval)that.StartTime) < 0) {
        return -1;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

您不应该进行任何投射,因为StartTimeEndTime都具有Time类型,并且您正在直接比较两者。

private Time StartTime,EndTime;

public TimeInterval(Time time,Time time2){
    StartTime =  time;
    EndTime =  time2;
}

@Override
public int compareTo(TimeInterval that) {

    if (StartTime.compareTo(that.EndTime) > 0) {
        return 1;
    }
    if (EndTime.compareTo(that.StartTime) < 0) {
        return -1;
    }
    return 0;
}

此外,建议camelCase用于命名变量。