泛型2
来源:互联网 发布:普通网络作家没收入 编辑:程序博客网 时间:2024/05/21 09:34
接口也可以和类一样加入泛型
实现泛型接口的两种方式:
1实现接口的子类使用泛型声明,待实例化使用的时候再传入具体的类型
interface Info<T>{// 在接口上定义泛型public T getVar() ;// 定义抽象方法,抽象方法的返回值就是泛型类型}class InfoImpl<T> implements Info<T>{// 定义泛型接口的子类private T var ;// 定义属性public InfoImpl(T var){// 通过构造方法设置属性内容this.setVar(var) ;}public void setVar(T var){this.var = var ;}public T getVar(){return this.var ;}};public class GenericsDemo24{public static void main(String arsg[]){Info<String> i = null;// 声明接口对象i = new InfoImpl<String>("李兴华") ;// 通过子类实例化对象System.out.println("内容:" + i.getVar()) ;}};
2实现的接口子类不想使用泛型声明,则可以在子类实现接口的时候,直接指定好具体的操作类型即可
interface Info<T>{// 在接口上定义泛型public T getVar() ;// 定义抽象方法,抽象方法的返回值就是泛型类型}class InfoImpl implements Info<String>{// 定义泛型接口的子类private String var ;// 定义属性public InfoImpl(String var){// 通过构造方法设置属性内容this.setVar(var) ;}public void setVar(String var){this.var = var ;}public String getVar(){return this.var ;}};public class GenericsDemo25{public static void main(String arsg[]){Info i = null;// 声明接口对象i = new InfoImpl("李兴华") ;// 通过子类实例化对象System.out.println("内容:" + i.getVar()) ;}};
泛型方法:
泛型方法不一定要在泛型类中定义:
[访问权限] <泛型标志>泛型标志 方法名称([泛型标志 参数名称])
class Demo{public <T> T fun(T t){// 可以接收任意类型的数据return t ;// 直接把参数返回}};public class GenericsDemo26{public static void main(String args[]){Demo d = new Demo();// 实例化Demo对象String str = d.fun("李兴华") ; //传递字符串int i = d.fun(30) ;// 传递数字,自动装箱System.out.println(str) ;// 输出内容System.out.println(i) ;// 输出内容}};
好处:使用泛型统一传入参数的类型
正确例子:
class Info<T>{// 指定上限,只能是数字类型private T var ;// 此类型由外部决定public T getVar(){return this.var ;}public void setVar(T var){this.var = var ;}public String toString(){// 覆写Object类中的toString()方法return this.var.toString() ;}};public class GenericsDemo28{public static void main(String args[]){Info<String> i1 = new Info<String>() ;Info<String> i2 = new Info<String>() ;i1.setVar("HELLO") ;// 设置内容i2.setVar("李兴华") ;// 设置内容add(i1,i2) ;}public static <T> void add(Info<T> i1,Info<T> i2){System.out.println(i1.getVar() + " " + i2.getVar()) ;}};
错误例子
class Info<T>{// 指定上限,只能是数字类型private T var ;// 此类型由外部决定public T getVar(){return this.var ;}public void setVar(T var){this.var = var ;}public String toString(){// 覆写Object类中的toString()方法return this.var.toString() ;}};public class GenericsDemo29{public static void main(String args[]){Info<Integer> i1 = new Info<Integer>() ;Info<String> i2 = new Info<String>() ;i1.setVar(30) ;// 设置内容i2.setVar("李兴华") ;// 设置内容add(i1,i2) ;}public static <T> void add(Info<T> i1,Info<T> i2){System.out.println(i1.getVar() + " " + i2.getVar()) ;}};
泛型数组:感觉可以实现自动封装
public class GenericsDemo30{public static void main(String args[]){Integer i[] = fun1(1,2,3,4,5,6) ;// 返回泛型数组fun2(i) ;}public static <T> T[] fun1(T...arg){// 接收可变参数return arg ;// 返回泛型数组}public static <T> void fun2(T param[]){// 输出System.out.print("接收泛型数组:") ;for(T t:param){System.out.print(t + "、") ;}}};
泛型的嵌套:
泛型也是一种普通的数据类型,也可以随便嵌套
总结:
1泛型在接口上可以定义,以及其使用的方式
2泛型在使用的时候可以进行嵌套的操作,只要根据其操作语法即可
3泛型可以指定其上下限,泛型方法记得要加上泛型标志.
阅读全文
0 0
- 泛型2:
- 泛型2
- 泛型2
- 泛型2
- (2)泛型
- 泛型2
- 泛型2
- JAVA [ 泛型 --- 2 ]
- 泛型-基本概念2
- 【java 2】java泛型
- 泛型 通配符2
- java泛型2
- 泛型(2)_适配器
- java泛型(2)
- step1-泛型2
- JAVA泛型2
- 泛型[2]继承&实现
- java泛型2
- java--集合--BlockingQueue
- GO语言补充(三)
- 高性能网络编程(二)----TCP消息的发送
- Shiro之手动踢掉用户-yellwcong
- 工作周报-2017年12月17日
- 泛型2
- curl使用实例
- (python3)1076. Wifi密码 (15分)——2017-12考题
- Java基础-集合Collection-List-Map
- Linux基础——C/C++ 项目管理之 Makefile经典教程
- Excel在统计分析中的应用—第十章—方差分析-无重复双因素方差分析工具
- 异常值检测
- CentOS6.9下的lsyncd安装与配置(以本地同步为例)
- 在项目中写一些冗余代码