有关泛型的疑问

最近在看Struts2的源码,但由于基础不够好(只有两年Java经验),看起来很吃力,源码中的代码组织与设计,以及一些编程思想对我来说很新颖,而且有不少知识是我没有接触过的,比如下面这种泛型:

 

  interface InjectorFactory<M extends Member & AnnotatedElement> {

        Injector create( ContainerImpl container, M member, String name )
                throws MissingDependencyException;
    }

 泛型我了解一些,但还比较浅,像上面这种用法我还是第一次见,而且也难以搜索到相关的博客,一般介绍泛型的博客也都流于表面。所以想在这里请教一下各位,这倒底是什么道理?那个&操作符是什么意思?谢谢了...

错了,刚看了下是
下面的方法中将要用到一个符号M来表示泛型,而这个泛型表示的具体类型,必须同时实现 Member 和 AnnotatedElement接口

刚刚解答 http://www.iteye.com/problems/87940 直接给你了 不明白的再回复问

泛型的目的:参数化类型,并且保证编写代码的正确性和安全性;

1、参数化类型
如我有一个数据结果List,这是一个有序列表,如果没有泛型,我可能这么来实现:
IntList、DoubleList --->每个类型都需要一个
或者
ObjectList --->Object是所有类型的超类,可能造成数据混乱,引起代码错误;

我们知道 List的算法骨架都是一样的,只是操作的数据不一样(如Int、Long……),因此呢,我们把这个数据类型参数化:
List ---->T表示泛型形参,类似于方法的形参

我们使用时可以通过 List Integer就是实参;

这样的好处我们只有一个List数据结构,仅仅是数据不同。

2、编码的安全性和正确性
没有泛型时
List 可以存放任意的Object类型,既Integer、Long等都行,我们可能放入不正确的数据,造成程序异常;

有了泛型之后,我们在写代码时 
  List<Integer> 只能放Integer类型 

3、你的这个List 和List 其实没什么区别,建议改成 List 这样就只能往里放UserVo 这个类型的数据。

泛型的作用就是限制存入集合中元素的类型
至于这个
InjectorFactory
那就是本类接受 继承 Member的类,或者这个类是AnnotatedElement类型的

建议: 百度搜索“黑马训练营” 然后去下载视频 “java基础增强” 中有泛型的详细讲解 张孝祥讲的很好