Это был недосмотр. Исправление продолжается .
Джош пишет:
"Они определенно принадлежат там. Их отсутствие непреднамеренно.
Мы должны положить их как можно скорее. "
Я согласен, хотя никто из нас, инженеров, не смотрит вперед
написание (и тестирование) всех этих ошеломляющих методов пересылки.
Дата публикации: 2006-08-21 00: 50: 41.0
Хотя требуется время.
Обновление : что касается его ручной реализации, вы можете подумать о перехвате пакета java.util
, поскольку вы хотите расширить static class SynchronizedSortedMap<K, V>
, который объявлен закрытым пакетом. Иначе это будет много копировальной пасты кода. Вот начало игры:
package java.util;
import java.util.Collections.SynchronizedSortedMap;
public class NewCollections {
public static <K, V> NavigableMap<K, V> synchronizedNavigableMap(NavigableMap<K, V> m) {
return new SynchronizedNavigableMap<K, V>(m);
}
static class SynchronizedNavigableMap<K, V> extends SynchronizedSortedMap<K, V> implements NavigableMap<K, V> {
private final NavigableMap<K, V> sm;
SynchronizedNavigableMap(NavigableMap<K, V> m) {
super(m);
sm = m;
}
SynchronizedNavigableMap(NavigableMap<K, V> m, Object mutex) {
super(m, mutex);
sm = m;
}
}
}
Пусть среда IDE автоматически сгенерирует нереализованные методы NavigableMap
и закодирует их так же, как SynchronizedSortedMap
. Вот ОДИН пример:
@Override
public K ceilingKey(K key) {
synchronized (mutex) { return sm.ceilingKey(key); }
}
Обратите внимание, что методы, которые возвращают, например, Set
, вам также нужно обернуть его в SynchronizedSet
. Опять же, посмотрите источники SynchronizedMap
и SynchronizedSortedMap
для понимания:)
Я не ожидаю, что это будет (может быть) механический процесс, поскольку он включает в себя множество факторов.