Java 如何在Android中键入cast类?

Java 如何在Android中键入cast类?,java,android,Java,Android,我有一门课 类别:StatusEventChangeDto:: public class StatusEventChangeDto { protected String address; DutyState status; protected double latitude,longitude; protected long time; public StatusEventChangeDto() {} public StatusE

我有一门课

类别:StatusEventChangeDto::

public class StatusEventChangeDto {

    protected String address;
    DutyState status;
    protected double latitude,longitude;
    protected long time;



    public StatusEventChangeDto()
    {}

    public StatusEventChangeDto(double latitude, double longitude, String address, long time, DutyState status)
    {
        this.latitude = latitude;
        this.longitude = longitude;
        this.address = address;
        this.time = time;
        this.status = status;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public long getTime() {
        return time;
    }

    public void setTime(long time) {
        this.time = time;
    }

    public DutyState getStatus() {
        return status;
    }

    public void setStatus(DutyState status) {
        this.status = status;
    }
    public double getLatitude() {
        return latitude;
    }

    public void setLatitude(double latitude) {
        this.latitude = latitude;
    }

    public double getLongitude() {
        return longitude;
    }

    public void setLongitude(double longitude) {
        this.longitude = longitude;
    }

    @Override
    public String toString()
    {
        StringBuffer sb = new StringBuffer();
        sb.append("Lat : "+latitude+"\n");
        sb.append("Long : "+longitude+"\n");
        sb.append("Address : "+address+"\n");
        sb.append("Time : "+time+"\n");
        sb.append("Status : "+status+"\n");
        return sb.toString();
    }
}
还有一节课

类别:StatusEventDurationChangeDto

public class StatusEventDurationChangeDto extends StatusEventChangeDto
{
    private Duration duration;

    public StatusEventDurationChangeDto()
    {
    }

    public Duration getDuration() {
        return duration;
    }

    public void setDuration(Duration duration) {
        this.duration = duration;
    }

    public String toString() {

        StringBuffer sb = new StringBuffer(super.toString());

        PeriodFormatter formatter = new PeriodFormatterBuilder()
                .appendHours()
                .appendSuffix("h")
                .appendMinutes()
                .appendSuffix("m")
                .toFormatter();
        String formatted = formatter.print(duration.toPeriod());
        sb.append("Duration : "+formatted+"\n");

        return sb.toString();
    }
}
这里我是这样的两个以上阶级的类型种姓

StatusEventChangeDto event1 = new StatusEventChangeDto(17.45, 78.45, "hyderabad, Telangana", now.minusHours(1).getMillis(), ONDUTY);
StatusEventChangeDto event2 = new StatusEventChangeDto(17.48, 78.50, "hyderabad, Telangana", now.minusHours(2).getMillis(), OFFDUTY);



StatusEventDurationChangeDto duration1 = (StatusEventDurationChangeDto)event1;
 duration1.setDuration(new Duration(now, now.minusHours(1)));
 StatusEventDurationChangeDto duration2 = (StatusEventDurationChangeDto) event2;
 duration2.setDuration(new Duration(now, now.minusHours(2)));
当我运行这个时,我得到了类型转换异常

帮帮我,伙计们,你不能将event1和event1强制转换为StatusEventDurationChangeDto,因为此变量具有指向对象StatusEventChangeDto实例的链接,而该实例不会将StatusEventDurationChangeDto扩展为StatusEventDurationChangeDto,反之亦然。

问题在于:

StatusEventDurationChangedToeDuration1=StatusEventDurationChangedToeEvent1

无法将event1/2的对象强制转换为StatusEventDurationChangeDto,因为event1/event2属于StatusEventChangeDto类型,属于您自己定义的类

我认为您应该将类视为用户定义的数据类型。您应该首先了解类和类型转换的完整概念

你有

StatusEventDurationChangeDto扩展StatusEventChangeDto

这意味着StatusEventDurationChangeDto是StatusEventChangeDto,因此可以将StatusEventDurationChangeDto强制转换为StatusEventChangeDto,但不能将StatusEventChangeDto强制转换为StatusEventDurationChangeDto


一般规则是,您可以将层次结构中的某个向下转换为某个向上转换,但不能反过来转换。

请在此处输入完整的代码好吗?我看不到扩展类。这是基本Java。它与安卓无关。您无法将对象强制转换为它未扩展且不是自己类型的类型。StatusEventChangeDto不扩展StatusEventDurationChangedTo如何编写此脚本?您正在尝试在子类中强制转换父类,而您的父类没有扩展您正在强制转换的类。尝试在父类中强制转换子类,它不会给您任何错误。希望这能帮助您理解java中的强制转换