# cast<RK, RV> method

1. @override

Map<RK, RV> cast<RK, RV>()
override

Provides a view of this map as having `RK` keys and `RV` instances, if necessary.

If this map is already a `Map<RK, RV>`, it is returned unchanged.

If this set contains only keys of type `RK` and values of type `RV`, all read operations will work correctly. If any operation exposes a non-`RK` key or non-`RV` value, the operation will throw instead.

Entries added to the map must be valid for both a `Map<K, V>` and a `Map<RK, RV>`.

Methods which accept `Object?` as argument, like containsKey, remove and operator [], will pass the argument directly to the this map's method without any checks. That means that you can do `mapWithStringKeys.cast<int,int>().remove("a")` successfully, even if it looks like it shouldn't have any effect.

## Implementation

    @override
    Map<RK, RV> cast<RK, RV>() => Map.castFrom<K, V, RK, RV>(this);