站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题JDK1.5中的泛型通配符

JDK1.5中的泛型通配符

摘要: JDK1.5中的泛型通配符


在下面这个例子中,通配符用于向API的用户隐藏类型信息。在内部,Set被存储为CustomerImpl。而API的用户只知道他们正在获取一个Set,从中可以读取Customer。
此处通配符是必需的,因为无法从Set-#60;CustomerImpl-#62;向Set-#60;Customer-#62;赋值:
public class CustomerFactory {
private Set-#60;CustomerImpl-#62; _customers;
public Set-#60;? extends Customer-#62; getCustomers() {
return _customers;
}
}
****************************************************

上面的材料,无论从文字或从代码,我都无法理解,有哪位高手能解释一下它想表达的意思?谢谢





Set-#60;? extends Customer-#62;这样的一个数据结构是指一个Set,这个里面Set存放的元素可以是任意继承或实现Customer的对象。根据上述代码Customer是个基类或接口,而CustomerImpl是Customer的子类或实现,上述代码的意义在于,用户只知道返回的是元素为Customer的Set,但是具体是什么内部实现,比如是CustomerImpl还是CustomerImpl2用户并不关心,说到底这是引入generic的一种多态性的体现。这也是一种工厂模式!


有两个问题

1 假设Customer是父类,那么 private Set-#60;CustomerImpl-#62; _customers;
写成 private Customer _customers;也可以呀,写成Set的形式有何好处?


2 我发现1.5中,一个类可以继承一个接口的,这是什么回事呢?在新的语法中,继承接口跟实现接口有区别吗?


类可以继承接口?你是怎么试出来的?我没有试出来


类不能继承接口
只能让接口继承接口(扩展接口)


1问题只是举个例子
可能在别的collections可以啊
泛型只是提供一种通用的解决方法


关于类继承接口的问题,我在下载的资料当中有段代码的确是这样写的,不过我没真的敲代码验证过,是我不够严瑾。




搂主的代码我编译过,我把Customer设成接口也是不报错的,但如果是
class CustomerImpl extends Customer{}这样就报错了


↑返回目录
前一篇: 一个关于HashMap的算法
后一篇: 怎样开发自己的jsp页面 标签?哪里有资料?