博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
泛型(二)
阅读量:6908 次
发布时间:2019-06-27

本文共 2956 字,大约阅读时间需要 9 分钟。

泛型接口

泛型可以用在类上,也可以用在接口,语法如下:

interface 接口名称<泛型类型>{}

1 package com.fwj.genericsinterfacedemo;2 3 public interface Demo
{
//定义泛型类型4 5 public void print(T param);//抽象方法中使用泛型类型6 }

下面定义子类实现接口,实现方法有两种:

例子:第一种实现手段

1 package com.fwj.genericsinterfacedemo; 2  3 public class DemoImpl
implements Demo
{ 4 5 @Override 6 public void print(T param) { 7 System.out.println("param:"+param); 8 } 9 10 }
1 package com.fwj.genericsinterfacedemo; 2  3 public class Test { 4  5  6     public static void main(String[] args) { 7  8         DemoImpl
demo = new DemoImpl
(); 9 demo.print("hello!");10 }11 12 }

例子:第二种实现手段:

1 package com.fwj.genericsinterfacedemo; 2  3 public class DemoImpl implements Demo
{ //设置具体类型 4 5 @Override 6 public void print(DemoImpl param) { 7 System.out.println("param:"+param); 8 } 9 10 }
1 package com.fwj.genericsinterfacedemo; 2  3 public class Test { 4  5     public static void main(String[] args) { 6          7         Demo
demo = new DemoImpl(); 8 demo.print(new DemoImpl()); 9 }10 11 }

泛型方法

方法上使用泛型,此方法所在的类不一定是泛型操作类

1 package com.fwj.genericsmethod;2 3 public class Demo {4 5     public 
T print(T param){ //定义泛型方法6 return param;7 }8 }
1 package com.fwj.genericsmethod; 2  3 public class Test { 4  5  6     public static void main(String[] args) { 7  8         Demo demo = new Demo(); 9         System.out.println(demo.print(1));//输入为1表示 类型是Integer10     }11 12 }

运行结果:1

方法的返回值定义成泛型数组:

1 package com.fwj.genericsmethod; 2  3 public class Test { 4  5  6     public static void main(String[] args) { 7  8         Integer i[] = func(1,2,3,4,5,6,7,8); 9         for (Integer integer : i) {10             System.out.println(integer);11         }12     }13     public static 
T[] func(T...param){14 return param;15 }16 17 }

泛型的嵌套设置

1 package com.fwj.genericsdemo02; 2  3 public class Info
{ 4 5 private T param; 6 7 public T getParam() { 8 return param; 9 }10 11 public void setParam(T param) {12 this.param = param;13 }14 15 }
1 package com.fwj.genericsdemo02; 2  3 public class Person
{ 4 5 private T info; 6 7 public T getInfo() { 8 return info; 9 }10 11 public void setInfo(T info) {12 this.info = info;13 }14 15 }
1 package com.fwj.genericsdemo02; 2  3 public class Test { 4  5     public static void main(String[] args) { 6         Person
> per = new Person
>();//嵌套 7 per.setInfo(new Info
()); 8 per.getInfo().setParam("fwj"); 9 System.out.println(per.getInfo().getParam());10 }11 12 }

转载于:https://www.cnblogs.com/mingluosunshan/p/3215198.html

你可能感兴趣的文章
常州大学新生寒假训练会试 题解
查看>>
ASCII,Unicode和UTF-8
查看>>
性能指标术语&理发店模型
查看>>
【几个关于CSS的网站】
查看>>
【转】python 2.6.6升级到python 2.7.x版本的方法
查看>>
MySQL日志
查看>>
【node】----mocha单元测试框架-----【格尔尼卡ぃ】
查看>>
POJ 1172 DFS
查看>>
选中列得到员工原来的信息
查看>>
C++ 强制类型转换
查看>>
关于属性的一些常用技巧
查看>>
解决8080端口占用问题
查看>>
8.Java5原子性操作类的应用
查看>>
Python中的for...else...搭配
查看>>
paypal支付页面语言版本问题
查看>>
A JavaScript Image Gallery
查看>>
框架Django
查看>>
操场边的人
查看>>
内存泄漏和内存溢出
查看>>
设计模式——初步学习
查看>>