1、
应用泛型分两类:
直接用:List<String> s = new ArrayList<String>();
扩展应用:
![](https://img.haomeiwen.com/i5346038/e7c095d0088c805e.png)
这样一来,UserDao具备了BaseDao的所有方法,并且这些方法中带泛型约束类的地方全部变成了User,使用的时候,UserDao那里不必再加泛形:
![](https://img.haomeiwen.com/i5346038/ca6332023371668d.png)
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
以上是接口的继承应用,下面是接口扩展定义中的泛型
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
如果采取接口扩展泛型,类似于List<E>扩展Collection<E>:
![](https://img.haomeiwen.com/i5346038/00c3c8353d7de0af.png)
那么实现类也变成:
![](https://img.haomeiwen.com/i5346038/f7429e623778e17a.png)
两种方式也没有本质区别,只是泛型约束类使用前后不同。
但是第二种用到userdao实现类的时候要这样写:
UserDao<User> userDao = new UserDaoImpl();
或者:UserDaoImpl userDao = new UserDaoImpl();
而且可以发现:这里用UserDaoImpl没有泛型,是因为其定义的时候就没加而是直接继承和实现的:
BasicDaoImpl<User> UserDao<User>
原则是本类定义时候加泛型,用的时候就得加泛型。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
javaAPI的应用中有:泛型应用在接口扩展定义:
![](https://img.haomeiwen.com/i5346038/3d134857a7ef5978.png)
网友评论