Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Разве Vector и Set не дети AbstractCollection?


Автор: sergejzr 7.10.2010, 14:46
Хотел написать метод для определения расстояния между двумя множествами целых чисел. 
Так как множества могут быть Vector'ом и Set'ом, создал метод, принимающий AbstractCollection

Компилер мне на это пишет:

Код

The method getJaccardSimilarity(AbstractCollection<Integer>, AbstractCollection<Integer>) in the type Cluster is not applicable for the arguments (Set<Integer>, Set<Integer>)


и

Код

The method getJaccardSimilarity(AbstractCollection<Integer>, AbstractCollection<Integer>) in the type Cluster is not applicable for the arguments (Vector<Integer>, Vector<Integer>)
 

Какие будут соображения? smile

Добавлено через 7 минут и 9 секунд
Нашёл ответ: Collection надо юзать

Автор: sergejzr 7.10.2010, 15:20
А с таким как-то можно бороться?

Код

The method addAll(Set<Object>) in the type BloomFilter is not applicable for the arguments (Set<Integer>)

Автор: Skipy 7.10.2010, 15:40
Цитата(sergejzr @ 7.10.2010,  15:20)
А с таким как-то можно бороться?

Код

The method addAll(Set<Object>) in the type BloomFilter is not applicable for the arguments (Set<Integer>)

Можно Вашу коллекцию объявить Set<Object> и складывать туда Integer. Если сигнатура действительно addAll(Set<Object>) - имхо, иначе никак.

Автор: mantracoder 7.10.2010, 16:29
Или так:

Код

public class BloomFilter {

    public <T> void addAll(Class<T> itemClass, Set<T> items) {
        
    }
    
}


Или так:

Код

public class BloomFilter<T> {

    public void addAll(Set<T> items) {
        
    }
    
}

Автор: Skipy 7.10.2010, 17:12
Если BloomFilter - свой класс, то можно просто сигнатуру поменять: addAll(Set<?> set).

Автор: sergejzr 7.10.2010, 18:09
Skipy, спасибо то что надо!

mantracoder, спасибо за идею. пригодится smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)