还有比使用通用通配符作为方法参数更好的方法吗?

问题描述 投票:0回答:1

我需要我的getNextId()方法用于三个不同的地图:

private final Map<Integer, Track> tracks;
private final Map<Integer, Train> trains;

private final Map<Integer, Coach> coaches;

到目前为止,我有三种不同的方法,但这显然是不必要的。如果只需要上述通配符,是否有比使用通配符?更好的方法?

public int getNextId(Map<Integer, ?> givenMap) {
            int id = 1;
        for (int key : givenMap.keySet()) {
            if (key > id) break;
            id = key + 1;
        }
        return id;
}

getNextId()方法基本上获得最小的可用ID> = 1。如果存在火车ID 1、2、3、4,并且用户删除了ID为2的火车,则下一个添加的火车将获得ID 2。

java generics wildcard
1个回答
1
投票

编写通过调用三个TrackTrainCoach继承的接口或类(我们称其为MyBase)。>

然后修改您的方法:

public int getNextId(Map<Integer, ? extends MyBase> givenMap) {
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.