打字猴:1.700447496e+09
1700447496
1700447497 //判断是否是管理员
1700447498
1700447499 if(iList.indexOf(Admin.class)>-1){
1700447500
1700447501 Admin admin=(Admin)user;
1700447502
1700447503 /*判断管理员是否有此权限*/
1700447504
1700447505 }else{
1700447506
1700447507 /*判断普通用户是否有此权限*/
1700447508
1700447509 }
1700447510
1700447511 return false;
1700447512
1700447513 }
1700447514
1700447515 }
1700447516
1700447517 此处进行了一次泛型参数类别判断,这里不仅仅违背了单一职责原则(Single Responsibility Principle),而且让“泛型”很汗颜:已经使用泛型限定参数的边界了,还要进行泛型类型判断。事实上,使用多重边界可以很方便地解决问题,而且非常优雅,建议读者在开发中考虑使用多重限定。
1700447518
1700447519
1700447520
1700447521
1700447522 编写高质量代码:改善Java程序的151个建议 [:1700438173]
1700447523 编写高质量代码:改善Java程序的151个建议 建议100:数组的真实类型必须是泛型类型的子类型
1700447524
1700447525 List接口的toArray方法可以把一个集合转化为数组,但是使用不方便,toArray()方法返回的是一个Object数组,所以需要自行转变;toArray(T[]a)虽然返回的是T类型的数组,但是还需要传入一个T类型的数组,这也挺麻烦的,我们期望输入的是一个泛型化的List,这样就能转化为泛型数组了,来看看能不能实现,代码如下:
1700447526
1700447527 public static<T>T[]toArray(List<T>list){
1700447528
1700447529 T[]t=(T[])new Object[list.size()];
1700447530
1700447531 for(int i=0,n=list.size();i<n;i++){
1700447532
1700447533 t[i]=list.get(i);
1700447534
1700447535 }
1700447536
1700447537 return t;
1700447538
1700447539 }
1700447540
1700447541 上面把要输出的参数类型定义为Object数组,然后转型为T类型数组,之后遍历List赋值给数组的每个元素,这与ArrayList的toArray方法很类似(注意只是类似),客户端的调用如下:
1700447542
1700447543 public static void main(String[]args){
1700447544
1700447545 List<String>list=Arrays.asList(“A”,“B”);
[ 上一页 ]  [ :1.700447496e+09 ]  [ 下一页 ]