Несоответствие типов параметров обобщенной функции Java для класса "Object" - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть следующий фрагмент кода:

class pp<K, V> {
    public pp(K k, V v) {
        this.k = k;
        this.v = v;
    }

    private K k;
    private V v;
}
class my{
    public static void f(pp<? extends Object, ? extends Object> p){
        System.out.println(p);
    }
}
public class genericFunction {
    public static void main(String[] args) {
        my.f("abc", new Integer(2));//compilation failure
    }
}

Не удается скомпилировать внутри main.Говоря искал

pp<? extends java.lang.Object,? extends java.lang.Object>

но нашел

java.lang.String,java.lang.Integer

Как это исправить?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Поскольку вы передаете буквальные аргументы (String и Integer) вместо передачи объекта pp.

Попробуйте my.f(new pp<>("abc", new Integer(2)))

Примечание: используйте Pascal casing для имен типов

0 голосов
/ 25 ноября 2018

У вас нет pp, у вас есть два аргумента.

Поместите их в ваш тип объекта: my.f(new pp<>("abc", new Integer(2))).

...