(добавление ответа, потому что примеров с универсальными символами Generics недостаточно)
// Source
List<Integer> intList = Arrays.asList(1,2,3);
List<Double> doubleList = Arrays.asList(2.78,3.14);
List<Number> numList = Arrays.asList(1,2,2.78,3.14,5);
// Destination
List<Integer> intList2 = new ArrayList<>();
List<Double> doublesList2 = new ArrayList<>();
List<Number> numList2 = new ArrayList<>();
// Works
copyElements1(intList,intList2); // from int to int
copyElements1(doubleList,doublesList2); // from double to double
static <T> void copyElements1(Collection<T> src, Collection<T> dest) {
for(T n : src){
dest.add(n);
}
}
// Let's try to copy intList to its supertype
copyElements1(intList,numList2); // error, method signature just says "T"
// and here the compiler is given
// two types: Integer and Number,
// so which one shall it be?
// PECS to the rescue!
copyElements2(intList,numList2); // possible
// copy Integer (? extends T) to its supertype (Number is super of Integer)
private static <T> void copyElements2(Collection<? extends T> src,
Collection<? super T> dest) {
for(T n : src){
dest.add(n);
}
}
Существует хорошая рецензия на Блог Craig McMurtry. С 2006, но большая часть из него все еще релевантно.
, А также дерево решений для обхода посредством выбора он показывает, как реализовать те изменения с помощью Windows Communication Foundation
В то время как не мгновенный ответ для Вас, я нашел книгу , Изучив очень полезный WCF; в нем существует маленький раздел по управлению версиями (который подобен совету Craig McMurtry, отправленному Espo). При поиске общей вводной книги это очень хорошо. Ее веб-сайт имеет много хорошего материала также: Блондинка Десяти кубометров
Редактирование: No уверенный, почему ее сайт не отвечает; это было некоторое время, так как я посетил, поэтому возможно, она завершила работу его. Нет уверенный.