2014-10-14 5 views
-2

мне нужно вызвать функцию, которая принимает коллекцию в качестве аргумента:Вызов функции с Collection в качестве аргумента

public static <T extends Type1> Type2 method(Collection<T> my_collection) 

Чтобы определить мою коллекцию, так как коллекции не могут быть реализованы, я определил ArrayList<T> a , Теперь я пытаюсь вызвать эту функцию с аргументом, но eclipse говорит, что моя функция не определена для типа Collection. Тем не менее, мой тип T расширяет Type1, как в определении метода. Не правильно ли я это назвал?

EDIT

Я в основном только что создал массив с элементами типа T: ArrayList<T> a = new ArrayList<T>();, что я населенный и названным методом. Точная ошибка метода: The method method(ArrayList<T>) is undefined for the type

+1

Просьба также предоставить код звонка. – Keppil

+0

Можете ли вы показать часть своего кода, которая вызывает эту функцию и точную ошибку, пожалуйста? – Mureinik

+0

Я не понимаю заголовок метода. Тип2 - это возвращаемое значение? Итак, что такое ''? И как вы параметризуете статический метод? – ControlAltDel

ответ

1

работает без проблем, в моем тесте:

public class Test 
{ 


    static class Type2 
    { 
    } 

    static class Type1 
    { 

    } 

    static class TestT extends Type1 
    { 

    } 


    public static void main(String[] args) 
    { 
     List<TestT> l = new ArrayList<TestT>(); 
     Type2 type2 = method(l); 
    } 

    public static <T extends Type1> Type2 method(Collection<T> my_collection) 
    { 
     return new Type2(); 
    } 

} 
1

Ваша функция будет работать для следующих функций:

ArrayList<Type1> a = new ArrayList<Type1>(); 

или коллекции любого класса, простирающейся Type1.

В <T extends Type1> Type2 method(Collection<T> my_collection)
<T extends Type1> общий тип T вы будете использовать должны быть расширение Type1 класса.

Смежные вопросы