java-泛形使用
2015-07-11 17:16
435 查看
1.类,方法上的泛形
2.接口,实现接口的泛形
3.泛形的限定符,通配符(注意:?通配符只能使用在已经定义了泛形的类上,进行该类上的泛形限定)
class Fu<T>
{
}
class InterImp
{
public void integer(Fu<? extends Integer> f) {
}
public void string(Fu<? super String> f)
{
}
}
//泛型类定义的泛型,在整个类中有效。如果被方法使用, //那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。 // //为了让不同方法可以操作不同类型,而且类型还不确定。 //那么可以将泛型定义在方法上。 /* 特殊之处: 静态方法不可以访问类上定义的泛型。 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。 */ class Demo<T> { public void show(T t) { System.out.println("show:"+t); } public <Q> void print(Q q) { System.out.println("print:"+q); } public static <W> void method(W t) { System.out.println("method:"+t); } }
2.接口,实现接口的泛形
/泛型定义在接口上。 interface Inter<T> { void show(T t); } /* class InterImpl implements Inter<String> { public void show(String t) { System.out.println("show :"+t); } } */ class InterImpl<T> implements Inter<T> { public void show(T t) { System.out.println("show :"+t); } }
3.泛形的限定符,通配符(注意:?通配符只能使用在已经定义了泛形的类上,进行该类上的泛形限定)
/* ? 通配符。也可以理解为占位符。 泛型的限定; ? extends E: 可以接收E类型或者E的子类型。上限。 ? super E: 可以接收E类型或者E的父类型。下限 注意:?通配符只能使用在已经定义了泛形的类上,进行该类上的泛形限定 */ class GenericDemo6 { public static void printColl(Collection<? extends Person> al) { Iterator<? extends Person> it = al.iterator(); while(it.hasNext()) { System.out.println(it.next().getName()); } } public static void printColl(ArrayList<?> al)//ArrayList al = new ArrayList<Integer>();error { Iterator<?> it = al.iterator(); while(it.hasNext()) { System.out.println(it.next().toString()); } } }
class Fu<T>
{
}
class InterImp
{
public void integer(Fu<? extends Integer> f) {
}
public void string(Fu<? super String> f)
{
}
}
相关文章推荐
- maven工程使用spring-boot-devtools进行热部署,更改代码避免重启web容器
- java观察者模式
- SpringMVC笔记3--annotation
- java单例 生成唯一的标识
- Java系列学习(十三)-字符串
- Eclipse + CDT引入OpenCV失败的解决办法
- SpringMVC笔记2--ViewResolver
- 解决spring-mvc @responseBody注解返回json 乱码问题
- spring mvc头
- 具体分析Struts工作流程
- Java基础-- Java API
- Java的bin等目录说明
- Java8对《编程导论(Java)》的影响
- 20个非常有用的Java程序片段
- IntelliJ IDEA导出Java 可执行Jar包
- Java算法之二分法和排序算法
- Java tutorial 6
- SpringMVC源码剖析(五)-消息转换器
- 剖析springmvc之HelloWorld
- ThinkingInJava 学习笔记 002