18---java中泛型02(通配符)
来源:互联网 发布:第九届云计算大会 编辑:程序博客网 时间:2024/06/13 13:17
1、泛型统配符?:
泛型对象进行引用传递的时候,类型必须一致;
以下会报错:
class Info<T>{
private T var;//定义泛型变量
public void setVar(T var){
this.var=var;
}
public T getVar(T var){
return this.var;
}
public String toString(){
return this.var.toString();
}
}
public class Demo{
public static void main(String args[]){
Info<String> i=new Info<String>();//创建String泛型类型的Info对象
i.setVar("lid");
fun(i);
}
public static void fun(Info<Object> temp){//接受Object泛型类型的Info对象
System.out.println("内容:"+temp);
}
}
如果非要传递,则可以将Info<Object> temp改为Info temp,但是这样改不合适我没可以改成
这样的Info<?> temp,使用通配符?可以接受任意类型的泛型;
如果使用?意味着可以接受任意的内容,但是此内容却无法直接使用<?>修饰的泛型对象进行修改;
Info<?> i=new Info<String>();
i.setVar("lid");
以上是错误的;
2、设置泛型;
之前设置泛型类型的时候,实际上都是可以任意设置的,只要是类就可以设置,但是zaijava中
可以指定一个泛型的上限和下限(最大到那个父类最小到那个子类);
设置上限:
类名称<? extends 类> 对象名称
设置下限:
类名称<? super 类> 对象名称
上限:
class Info<T extends Number>{
private T var;//定义泛型变量
public void setVar(T var){
this.var=var;
}
public T getVar(T var){
return this.var;
}
public String toString(){
return this.var.toString();
}
}
public class Demo{
public static void main(String args[]){
Info<Integer> i1=new Info<Integer>();
Info<Float> i2=new Info<Float>();
i1.setVar(20);
i2.setVar(30.1f);
fun(i1);
fun(i2);
}
public static void fun(Info<? extends Number> temp){
//只能接受Number类型及其类类型的数据
System.out.println(temp+"、");
}
}
下限:当使用的泛型只能在本类及其父类类型上应用的时候,就必须使用泛型的范围下限配置
class Info<T>{
private T var;//定义泛型变量
public void setVar(T var){
this.var=var;
}
public T getVar(T var){
return this.var;
}
public String toString(){
return this.var.toString();
}
}
public class Demo{
public static void main(String args[]){
Info<String> i1=new Info<String>();
Info<Object> i2=new Info<Object>();
i1.setVar("lid");
i2.setVar(new Object());
fun(i1);
fun(i2);
}
public static void fun(Info<? super String> temp){
System.out.println(temp+"、");
}
}
以上只能是String和Object类型;
3、泛型与子类继承的限制:
一个类的子类可以通过对象多态性,为其父类实例化,但是在泛型类型操作中,
子类的泛型类型是无法使用父类的泛型类型接受的,例如:Info<String>不能
用Info<Object>接受;
- 18---java中泛型02(通配符)
- 黑马程序员_java中泛型(通配符)与反射技术
- JAVA通配符
- java通配符
- java 通配符
- Java通配符<?>
- java 通配符
- java 通配符
- java通配符
- java通配符
- Java通配符(?)
- java通配符
- java中泛型学习1之类型通配符(?)
- java中泛型“T" 与通配符“?"区别
- Java泛型解析(02):通配符限定
- 在Java中展开glob(通配符)
- java泛型(三)、通配符的使用
- java泛型(三)、通配符的使用
- Linux 实时信号 非实时信号
- c++指针
- .net 操作XML小结
- 使用SmartUpload上传文件
- CSS技巧放送
- 18---java中泛型02(通配符)
- hide main() function
- Hash表(C++实现)
- jQuery 实现点击文字放大效果
- Oracle 9i 性能大提升 SGA PGA 参数修改 &关于OS 64 32 Oracle 32 64 位概念 ...
- Posterous被收购,大批用户投入WordPress怀抱
- sqlite db文件的复制至sdcard
- 一个图形界面开发的网站
- C# 连接SQLite的问题