public class Main{
public static void main(String[] args){
Pair<Integer> p = new Pair<Integer>(123,234);
//对象由你创建,所以你很清楚它的泛型类型就是Integer,所以以下的读方法都可以编译运行:
Number first = p.getFirst();
Number last = p.getLast();
Integer first_int = (Integer)p.getFirst();
Integer last_int = (Integer)p.getLast();
//以下的写方法也同样可以编译运行
p.setFirst(new Integer("888"));
p.setLast(new Integer("999"));
}
}
佐上楼兰
要理解廖老师说的只读不写,你只需要弄清楚1个问题,那就是当前你要处理的对象从何而来。
请考虑以下两种情况:
情况一,对象由你创建而来:
比如
情况二,对象由他人创建而来:
比如说你和他人共同开发项目,Pair<T>由他人编写,而你的任务是在某个逻辑处理类里接收并处理这个由他人创建的Pair<T>的实例对象 p:
情况二较多见,所以当在某个逻辑处理方法中要处理带泛型的数据类型的时候,在该方法内部,对于泛型实例对象p,你只能读,不能写。