多平台统一管理软件接口,如何实现多平台统一管理软件接口
361
2022-12-17
java泛型常用通配符实例解析
这篇文章主要介绍了java泛型常用通配符实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
今天在看ArrayList原码是看到这样的一个符号,好奇怪。
?表示通配符,表示的意思是匹配E或E的子类,具体类型未知。
1.限定通配符
编写一个类似于ArrayList的动态数据
public class Gys private final static int default_capacity =10; private int endIndex =0; private Object[] elemts; public Gys() { this.elemts = new Object[default_capacity]; } public void add(T t){ if(elemts.length-1< endIndex){ int newCapcti= default_capacity *2; elemts= Arrays.copyOf(elemts,newCapcti); } elemts[endIndex++]=t; } public void addAll(Gys for(int i=0;i add(cs.get(i)); } } public int size(){ return endIndex; } public T get(int i){ if(i< endIndex){ return (T) elemts[i]; } throw new RuntimeException("索引超出界限"); } public static void main(String[] args) { Gys gys.add(25); Gys gys2.add(2); gys.addAll(gys2); } } 修改上面的代码,将addAll参数改成如下 public void addAll(Gys extend T> cs){ for(int i=0;i add(cs.get(i)); } } 这个时候代码编译通过了。并且能够正常的访问其中的元素。 2.无限定通配符。 改写上面的addAll方法代码。 public void addAll(Gys> cs){ for(int i=0;i add(cs.get(i)); } } 上面的代码编译不通过。?表示类型不确定,从安http://全角度考虑无限定的泛型,无法进行写操作。 但是可以这样使用。 /** *判断元素是否存在 */ public boolean isHas(Gys> gys,Object elemt){ for(int i=0;i if(gys.get(i).equawsFtUudEls(elemt)){ return true; } } return false; } 除了 extend E>用法;还有 super E>的用法,表示类型是E或E的父类。不过多介绍了,用的少。
private final static int default_capacity =10;
private int endIndex =0;
private Object[] elemts;
public Gys() {
this.elemts = new Object[default_capacity];
}
public void add(T t){
if(elemts.length-1< endIndex){
int newCapcti= default_capacity *2;
elemts= Arrays.copyOf(elemts,newCapcti);
}
elemts[endIndex++]=t;
}
public void addAll(Gys
for(int i=0;i add(cs.get(i)); } } public int size(){ return endIndex; } public T get(int i){ if(i< endIndex){ return (T) elemts[i]; } throw new RuntimeException("索引超出界限"); } public static void main(String[] args) { Gys gys.add(25); Gys gys2.add(2); gys.addAll(gys2); } } 修改上面的代码,将addAll参数改成如下 public void addAll(Gys extend T> cs){ for(int i=0;i add(cs.get(i)); } } 这个时候代码编译通过了。并且能够正常的访问其中的元素。 2.无限定通配符。 改写上面的addAll方法代码。 public void addAll(Gys> cs){ for(int i=0;i add(cs.get(i)); } } 上面的代码编译不通过。?表示类型不确定,从安http://全角度考虑无限定的泛型,无法进行写操作。 但是可以这样使用。 /** *判断元素是否存在 */ public boolean isHas(Gys> gys,Object elemt){ for(int i=0;i if(gys.get(i).equawsFtUudEls(elemt)){ return true; } } return false; } 除了 extend E>用法;还有 super E>的用法,表示类型是E或E的父类。不过多介绍了,用的少。
add(cs.get(i));
}
}
public int size(){
return endIndex;
}
public T get(int i){
if(i< endIndex){
return (T) elemts[i];
}
throw new RuntimeException("索引超出界限");
}
public static void main(String[] args) {
Gys
gys.add(25);
Gys
gys2.add(2);
gys.addAll(gys2);
}
}
修改上面的代码,将addAll参数改成如下
public void addAll(Gys extend T> cs){
for(int i=0;i add(cs.get(i)); } } 这个时候代码编译通过了。并且能够正常的访问其中的元素。 2.无限定通配符。 改写上面的addAll方法代码。 public void addAll(Gys> cs){ for(int i=0;i add(cs.get(i)); } } 上面的代码编译不通过。?表示类型不确定,从安http://全角度考虑无限定的泛型,无法进行写操作。 但是可以这样使用。 /** *判断元素是否存在 */ public boolean isHas(Gys> gys,Object elemt){ for(int i=0;i if(gys.get(i).equawsFtUudEls(elemt)){ return true; } } return false; } 除了 extend E>用法;还有 super E>的用法,表示类型是E或E的父类。不过多介绍了,用的少。
add(cs.get(i));
}
}
这个时候代码编译通过了。并且能够正常的访问其中的元素。
2.无限定通配符。
改写上面的addAll方法代码。
public void addAll(Gys> cs){
for(int i=0;i add(cs.get(i)); } } 上面的代码编译不通过。?表示类型不确定,从安http://全角度考虑无限定的泛型,无法进行写操作。 但是可以这样使用。 /** *判断元素是否存在 */ public boolean isHas(Gys> gys,Object elemt){ for(int i=0;i if(gys.get(i).equawsFtUudEls(elemt)){ return true; } } return false; } 除了 extend E>用法;还有 super E>的用法,表示类型是E或E的父类。不过多介绍了,用的少。
add(cs.get(i));
}
}
上面的代码编译不通过。?表示类型不确定,从安http://全角度考虑无限定的泛型,无法进行写操作。
但是可以这样使用。
/**
*判断元素是否存在
*/
public boolean isHas(Gys> gys,Object elemt){
for(int i=0;i if(gys.get(i).equawsFtUudEls(elemt)){ return true; } } return false; } 除了 extend E>用法;还有 super E>的用法,表示类型是E或E的父类。不过多介绍了,用的少。
if(gys.get(i).equawsFtUudEls(elemt)){
return true;
}
}
return false;
}
除了 extend E>用法;还有 super E>的用法,表示类型是E或E的父类。不过多介绍了,用的少。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~