如何处理必需但空的实现?

What to do with required, but empty, implementations?

我有一个 google 地图 class

class MapActivity : FragmentActivity(), OnMapReadyCallback, LocationListener, GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener {

但是我只使用了实现提供的一些必需功能。 我将所有未使用的方法放在 class 的底部,如下所示:

override fun onConnected(p0: Bundle?) {
    checkLocationPermission()
    val mLocationProvider = FusedLocationProviderClient(this)

    mLocationProvider.lastLocation.addOnCompleteListener { task ->
        goToLocation(task.result.latitude, task.result.longitude)
    }

}

override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {
    //To change body of created functions use File | Settings | File Templates.
}

override fun onProviderEnabled(provider: String?) {
    //To change body of created functions use File | Settings | File Templates.
}

override fun onProviderDisabled(provider: String?) {
    //To change body of created functions use File | Settings | File Templates.
}

override fun onConnectionSuspended(p0: Int) {
    //To change body of created functions use File | Settings | File Templates.
}

override fun onConnectionFailed(p0: ConnectionResult) {
    //To change body of created functions use File | Settings | File Templates.
}

有没有更好的方法来消除这些不需要的必需函数?

您必须实现Interface的所有方法。

但是是的,在代码清理的情况下,你可以有一个额外的class来实现interface的所有方法。并将 class 与您的原件一起使用。

Click here 了解更多信息。

不,你不能做任何事情(除了按照建议创建另一个 class...),这是 接口隔离原则 的典型权衡。

无论如何,如果您需要监听位置变化更新,请使用

import com.google.android.gms.location.LocationListener;

告诉你只执行

void onLocationChanged(Location var1);

我还建议您使用 #region 并在您的编辑器上折叠代码以在视觉上清理您的 class。

希望对您有所帮助。