泛型 通配符2
来源:互联网 发布:linux怎么运行sh文件 编辑:程序博客网 时间:2024/06/06 01:31
1.泛型制定的类型不一致,编译时报错
class Info<T>
{
private T var ;
public void setVar(T var){
this.var = var ;
}
public T getVar(){
return this.var ;
}
public String toString(){
return this.var.toString() ;
}
}
public class GenericsDemo01
{
public static void main(String args[]){
Info<String> i = new Info<String>() ;
i.setVar("MLDN") ;
fun(i) ;
}
public static void fun(Info<Object> temp){
System.out.println("内容:" + temp) ;
}
}
D:\test\genericsdemo02>javac GenericsDemo01.java
GenericsDemo01.java:19: 错误: 无法将类 GenericsDemo01中的方法 fun应用到给定类型;
fun(i) ;
^
需要: Info<Object>
找到: Info<String>
原因: 无法通过方法调用转换将实际参数Info<String>转换为Info<Object>
1 个错误
2.?号表示,可以接收任意类型的泛型对象
class Info<T>
{
private T var ;
public void setVar(T var){
this.var = var ;
}
public T getVar(){
return this.var ;
}
public String toString(){
return this.var.toString() ;
}
}
public class GenericsDemo01
{
public static void main(String args[]){
Info<String> i = new Info<String>() ;
i.setVar("MLDN") ;
fun(i) ;
}
public static void fun(Info<?> temp){
System.out.println("内容:" + temp) ;
}
}
使用?可以接收任意的内容,但是此内容却无法使用?修饰的泛型对象进行修改
3.受限泛型
设置上限:
声明对象: 类名称<?extends 类> 对象名称
声明类: 类名称<泛型标识 extends 类>{}
设置下限
声明对象: 类名称<?super 类> 对象名称
声明类: 类名称<泛型标识 extends 类>{}
设置上限:
class Info<T>
{
private T var ;
public void setVar(T var){
this.var = var ;
}
public T getVar(){
return this.var ;
}
public String toString(){
return this.var.toString() ;
}
}
public class GenericsDemo02
{
public static void main(String args[]){
Info<Integer> i1 = new Info<Integer>() ;
Info<Float> i2 = new Info<Float>() ;
i1.setVar(30) ;
i2.setVar(30.2f) ;
fun(i1) ;
fun(i2) ;
}
public static void fun(Info<? extends Number> temp){
System.out.println(temp + "、") ;
}
}
设置下限:
class Info<T>
{
private T var ;
public void setVar(T var){
this.var = var ;
}
public T getVar(){
return this.var ;
}
public String toString(){
return this.var.toString() ;
}
}
public class GenericsDemo04
{
public static void main(String args[]){
Info<String> i1 = new Info<String>() ;
Info<Object> i2 = new Info<Object>() ;
i1.setVar("MLDN") ;
i2.setVar(new Object()) ;
fun(i1) ;
fun(i2) ;
}
public static void fun(Info<? super String> temp){
System.out.println(temp + "、") ;
}
}
- 泛型 通配符2
- 泛型-通配符-------(2)
- 泛型 通配符
- 泛型-通配符
- 泛型 通配符
- Java泛型-- 通配符
- 【泛型】_通配符笔记
- Java泛型--通配符
- 泛型-通配符的使用
- 【泛型】_通配符笔记
- Java泛型-- 通配符
- Java泛型-- 通配符
- 反射、泛型(通配符)、注解
- Java泛型-- 通配符
- 泛型 (中) - 解析通配符:
- 【泛型】泛型里有个,通配符:?
- Java泛型:通配符
- 泛型(通配符)
- Ubuntu 12.04 无线网卡驱动问题 bcm43xx
- 【C++复习一】C++关键字
- 3月市场调研:菜油行情表现出异常的势头
- POJ 2828 Buy Tickets(线段树)
- uva579 计算几何入门
- 泛型 通配符2
- Poj Trie树 水题整理 (Poj 1065+1204+2001+2418)
- Before You Refactor
- 第二章 shell程序设计
- java 技术小结
- Beware the Share
- 802.11协议中帧控制域中To DS and From DS 比特位的含义
- 程序人生--2005年(26)
- 编写程序求n!--C语言中数组的使用