



其它问号的部分不变,最终的结果显示worker和integer都打印出来了,任意类型都可以
现在我们有一个需求,有两个集合,除了worker就是student,

现在探讨worker类和String一起存在时的情况。
现在想打印一个容器中的元素,但是这个容器得有一个条件,不是什么都打印,只打印person的子类。既不是打印一个类(如果是一个类,那么T就可以明确),如果是打印所有类,则是问号表示。现在是想打印一部分类,就是打印worker,和student。有人说直接用person就可以了,但是左侧的小图标显示这是错误的。

person是一个单独的类型,而worker和student也是单独的类型,它们之间存在继承关系,但是在这里collection里面只能存储person的对象,这是一个具体类型。
举个例子来看,写全了如下所示,左右两边的泛型不匹配。现在有一集合al,如果它们可以用继承关系来表现的话,集合声明的时候说里面存的全都是人,也就是说无论是worker还是student都可以存进来。但是右侧的实体中标明只能存student,这就产生了矛盾(多态和泛型在这点上的区别是在哪?)。一般情况下写泛型要具备左右两边一致的特点。

但是我们现在就想要接收worker和student,要想接收person或者person的子类对象,可以这么弄。person子类对象很多,不确定,写法如下。这里还有波浪线,导个包就可以了。

可上面所讲的知识点就是泛型的限定,这属于泛型的高级应用。以前在用object的时候,只要写个object,那么什么都可以解决,现在做了限定以后,只能有一部分类型能进来,如果不是这个类型或它的子类,那么就直接编译失败。以前是编译没事,运行出事。
现在java的很多更新都是将运行时期的错误,往编译时期转,这样更加的安全。
泛型的限定知识点具体的写法如下,限定之后,可以直接拿继承方法。只要存进来都是它的子类的话,编译时检测都是对的。取得时候,都可以用父类来取,不能用student取是必然得,因为是问号,泛型限定中第一种体现搞定。在遍历的时候,貌似存在能否直接调用父类方法的问题。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-71991-2.html
不知道是哪个环节出问题
就远远地盯着它