java10.面向对象之泛型
来源:互联网 发布:js 显示html代码 编辑:程序博客网 时间:2024/06/16 07:07
一、认识泛型
1.泛型(Generic)是在JDK1.5之后增加的新功能。
2.泛型可以解决数据类型的安全性问题,他主要的原理,是在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。
3.格式:
访问权限 class 类名称<泛型,泛型…>{
属性
方法
}
4.对象的创建
类名称<具体类型> 对象名称 = new 类名称<具体类型>();
泛型代码示例:
class Point<T> { //并不明确指定它的类型,而是看下面需要什么类型就传递什么类型。 private T x; private T y; public T getX() { return x; } public void setX(T x) { this.x = x; } public T getY() { return y; } public void setY(T y) { this.y = y; }}/** * 经纬度 int float string * * @author Clp * */public class GenericDemo01 { public static void main(String[] args) { Point<String> p = new Point<String>(); p.setX("经度:109"); p.setY("纬度:100"); System.out.println(p.getX() + " " + p.getY()); }}
运行结果:
.
.
.
二、构造方法中使用泛型
1.构造方法中使用泛型:
构造方法可以为类中的属性初始化,那么如果类中的属性通过泛型指定,而又需要通过构造方法设置属性内容的时候,那么构造方法的定义与之前并无不同,不需要像声明类那样指定泛型
使用范例:
class Co<T> { private T value; public Co(T value) { this.value = value; } public T getValue() { return value; } public void setValue(T value) { this.value = value; }}public class GenericDemo02 { public static void main(String[] args) { Co<String> c = new Co<String>("构造方法中使用泛型"); System.out.println(c.getValue()); }}
结果:
.
.
三、指定多个泛型
范例:
class Gen<K, T> { private T take; private K key; public T getTake() { return take; } public void setTake(T take) { this.take = take; } public K getKey() { return key; } public void setKey(K key) { this.key = key; }}public class GenericDemo03 { public static void main(String[] args) { Gen<String, Integer> g = new Gen<String, Integer>(); g.setTake(10); g.setKey("key"); System.out.println(g.getTake() + " " + g.getKey()); }}
结果:
.
.
四、通配符
范例:
这里写代码片class Info<T> { private T key; public T getKey() { return key; } public void setKey(T key) { this.key = key; } @Override public String toString() { return this.getKey().toString(); }}public class GenericDemo04 { public static void main(String[] args) { Info<Integer> i = new Info<Integer>(); i.setKey(1000); tell(i); } /** * 通配符:? * * @param i */ public static void tell(Info<?> i) { // <>里面如果用Object会报错,用一个通配符? System.out.println(i);//i之所以可以直接被调用,是因为toString被重写了 }}
.
.
五、泛型接口
1.JDK1.5之后,不仅仅可以声明泛型类,也可以声明泛型接口,声明泛型接口和声明泛型类的语法类似,也是在接口名称后面加上< T >
2.格式:
interface 接口名称< 泛型标识 >{ }
3.范例:
interface GenInter<T> { public void say();}class Gin<T> implements GenInter<String> { private String info; public Gin(String info) { this.info = info; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } @Override public void say() { }}public class GenericDemo05 { public static void main(String[] args) { Gin<String> g = new Gin<String>("jikexueyuan"); System.out.println(g.getInfo()); }}
六、泛型方法
1.泛型方法中可以定义泛型参数,此时,参数的类型就是传入数据类型。
2.格式:
访问权限 < 泛型标识 > 泛型标识 方法名称([泛型标识 参数名称])
3.范例:
class Gener { public <T> T tell(T t) { return t; }}public class GenericDemo06 { public static void main(String[] args) { Gener g = new Gener(); String str = g.tell("jikexueyuan"); System.out.println(str); int i = g.tell(10); System.out.println(i); }}
结果:
.
.
泛型数组
1.在使用泛型方法的时候,也可以传递或返回一个泛型数组
2.范例:
public class GenericDemo07 { public static void main(String[] args) { String arr[] = { "www", "jikexueyuan", "com" };//也可以将String代换成Integer tell(arr); } public static <T> void tell(T arr[]) { for (int i = 0; i < arr.length; i++) System.out.println(arr[i]); }}
0 0
- java10.面向对象之泛型
- 【Java工程师之路】[1-2.2]Java10个面向对象设计原则
- 【Java工程师之路】[1-2.2]Java10个面向对象设计原则
- Java10
- java10
- JAVA10
- JavaSE面向对象之泛型
- Java面向对象之泛型
- 面向对象之对象
- 面向对象之对象
- 3. Java面向对象之泛型-指定多个泛型
- 面向对象之设计
- 面向对象之设计
- 面向对象之管理
- 面向对象之继承
- 面向对象之CRC
- java之面向对象
- 面向对象之继承
- Linux配置yum源 本地服务。web Service 服务器
- Linux IO 多路复用是什么意思,一直没弄明白?
- iOS 项目添加背景音乐
- 本地定时推送
- iOS 获取图片路径
- java10.面向对象之泛型
- topics: Java file getPath getAbsolutePath getCanonicalPath
- android studio 接入androidannotations compileDebugJavaWithJavac错误解决
- nginx 编译安装
- Self-Description
- Spring 集成 MyBatis 笔记(Mybatis-Spring 的用法)- 实战部分
- iOS 字符串替换和NSdata转nastring
- Android性能优化之内存篇
- JDK、JRE、JVM三者间的关系