类不能转换为另一个类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类不能转换为另一个类相关的知识,希望对你有一定的参考价值。

我正在使用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;
}
答案

你不应该做任何演员,因为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来命名变量。

以上是关于类不能转换为另一个类的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能在 AsyncTask 中为另一个类的 ListView 设置适配器?

如何将Java类转换为另一个类

为啥在 C++ 中一个类的指针可以转换为另一个类的指针?

将 stdClass 对象转换/转换为另一个类

为啥我不能为另一个类提取方法?

从一个模板类转换为另一个(都派生自同一个基类)