Java 如何在Android中键入cast类?
我有一门课 类别:StatusEventChangeDto::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
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中的强制转换