跑的是:
public class Main { public static void main(String[] args) { Pair<Number> p1 = new Pair<>(12.3, 4.56); Pair<Integer> p2 = new Pair<>(123, 456); setSame(p1, 100); setSame(p2, 200); Integer x = p2.getFirst(); //加了这个,然后run的出结果的 System.out.println(x); System.out.println(p1.getFirst() + ", " + p1.getLast()); System.out.println(p2.getFirst() + ", " + p2.getLast()); } static void setSame(Pair<? super Integer> p, Integer n) { p.setFirst(n); p.setLast(n); }
} class Pair<T> { private T first; private T last; public Pair(T first, T last) { this.first = first; this.last = last; } public T getFirst() { return first; } public T getLast() { return last; } public void setFirst(T first) { this.first = first; } public void setLast(T last) { this.last = last; } }
文中的意思是在那个有通配符?的静态方法里使用会报错,你在main方法里肯定能通过,因为main方法中p与p2是普通泛型类,它们的定义中没有用通配符?super T的形式
Sign in to make a reply
Mincle海天共舞
跑的是: