Java 向现有类添加便利方法(类强制转换异常)
Java/Android noob在这里(仍然)我希望你能帮忙 我试图添加一个小的方便方法来获得经过的时间数,而不是从新纪元开始的时间数 所以我试着这样做:Java 向现有类添加便利方法(类强制转换异常),java,android,oop,casting,Java,Android,Oop,Casting,Java/Android noob在这里(仍然)我希望你能帮忙 我试图添加一个小的方便方法来获得经过的时间数,而不是从新纪元开始的时间数 所以我试着这样做: public class EasyLocation extends android.location.Location { ... public long getElapsedTime() { return getTime() - System.currentTimeMillis(); } }
public class EasyLocation extends android.location.Location {
...
public long getElapsedTime() {
return getTime() - System.currentTimeMillis();
}
}
然而,当我试图像下面的代码中那样使用它时,它将其强制转换到我的Location类。我有一个班级演员例外。我已经读过了,我完全理解它为什么不起作用。这不是问题所在
问题是:这不是一个火车撞车事件,但我希望返回的内容包含我的方法,以使我的其余代码更干净一点。我想不出一个解决办法。有什么办法吗
lastNetworkLocation = (EasyLocation) locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
谢谢
杰拉德。你不能那样做。(一个
位置
不是一个易用位置
)
我相信你要找的是
您通常会这样做:
public class EasyLocation extends android.location.Location {
public EasyLocation(Location loc) {
// copy data from loc to this.
super(loc);
}
...
public long getElapsedTime() {
return getTime() - System.currentTimeMillis();
}
}
而不是做
lastNetworkLocation =
(EasyLocation) locationManager.getLastKnownLocation(
LocationManager.NETWORK_PROVIDER);
是吗
lastNetworkLocation =
new EasyLocation(locationManager.getLastKnownLocation(
LocationManager.NETWORK_PROVIDER));
请记住,大多数人可能会说“偏好组合而非继承”,并同意
public class EasyLocation {
Location loc;
public EasyLocation(Location loc) {
this.loc = loc;
}
public long getElapsedTime() {
return getTime() - System.currentTimeMillis();
}
public Location getLocation() {
return loc;
}
}
我会用这个吗?lastNetworkLocation=new EasyLocation(locationManager.getLastKnownLocation(locationManager.NETWORK_PROVIDER));像这样?太棒了。我就快到了!谢谢你!:)Hmmm组合与继承。给了我一些思考的东西。谢谢你。在这种情况下,构图看起来更干净,更有意义。