Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向现有类添加便利方法(类强制转换异常)_Java_Android_Oop_Casting - Fatal编程技术网

Java 向现有类添加便利方法(类强制转换异常)

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(); } }

Java/Android noob在这里(仍然)我希望你能帮忙

我试图添加一个小的方便方法来获得经过的时间数,而不是从新纪元开始的时间数

所以我试着这样做:

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组合与继承。给了我一些思考的东西。谢谢你。在这种情况下,构图看起来更干净,更有意义。