(011) java后台开发之泛型类
来源:互联网 发布:财务审批软件 编辑:程序博客网 时间:2024/06/06 01:31
转自:https://course.tianmaying.com/java-basic+generic-basic#1
泛型类 (很重要的一个自定义的类型)
在使用泛型时,我们可以把类型作为参数传入到泛型类中。类似于把参数传入到方法中一样。我们来实现一个通用的泛型Point类:
public 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; }}
此时Point
成为了一个泛型类,T
是则是类型参数,T
具体是什么类型那要看程序运行的时候我们传入什么类型给他。
使用泛型类时,注意实际传入的类型参数不能是原生类型,必须是引用类型,因此如果希望传入int
类型的话,那么需要传入int
对应的包装类Interger
。对应地,double
类型则要传入包装类Double
。
public class Test{ public static void main(String[] args){ // 坐标为int类型,把int类型的包装类Integer作为参数传入泛型类中 Point<Integer> point1 = new Point<Integer>(); point1.setX(1); point1.setY(1); // 坐标为double类型,把double类型的包装类Double作为参数传入泛型类中 Point<Double> point2 = new Point<Double>(); point2.setX(3.456); point2.setY(4.789); }}
Point<Integer>
基本等价于第一节中的Point
类,而Point<Double
>则基本等价于DoublePoint
类。
我们再举一个例子,我们定义一个容器类Container
,这个容器中可以存放各种类型的对象,可以使用泛型类实现这一特性。
public class Container<T> { private T variable; public Container () { variable = null; } public Container (T variable) { this.variable = variable; } public T get() { return variable; } public void set(T variable) { this.variable = variable; } public static void main(String[] args) { Container<String> stringContainer = new Container<String>(); stringContainer.set("this is a string"); }}
我们实例化Container对象时,只需设置它使用的类型,如:
Container<String> stringContainer = new Container<String>();stringContainer.set("this is a string");
在下一节中,我们将学习到Java为我们提供的非常实用的容器类(也称之为集合类)。
泛型也可以直接应用在一个方法中,不要求这个方法所属的类为泛型类。例如我们要获取一个对象的类名称:
public class Printer { public static <T> void printArray(T[] objects) { if (objects != null) { for(T element : objects){ System.out.printf("%s",element); } } } public static void main(String[] args) { Integer[] intArray = { 1, 2, 3, 4, 5 }; Character[] charArray = { 'T', 'I', 'A', 'N', 'M', 'A', 'Y', 'I', 'N', 'G' }; printArray(intArray); printArray(charArray); } }
与泛型类不同的是泛型方法需要在方法返回值前用尖括号声明泛型类型名,这样才能在方法中使用这个标记作为返回值类型或参数类型。
阅读全文
0 0
- (011) java后台开发之泛型类
- (001) java后台开发之流程初识
- (002) java后台开发之对象初始化
- java后台开发入门之环境搭建
- (006) java后台开发之基本数据类型
- (005) java后台开发之Mac终端命令运行java
- (008) java后台开发之java程序中的控制结构
- java后台开发工程师
- java 后台开发流程
- Java后台开发面试
- Java后台开发面试
- 美团秋招Java后台开发
- Java应用后台开发设计之异常封装(一)
- (003) java后台开发之设置Eclipse的代码提示
- (009) java后台开发之堆和栈的区别
- (010) java后台开发之String字符串操作
- C++后台开发之我见
- java下开发web后台
- iOS Bilibili/ijkplayer 集成与使用
- 设计模式----单例模式
- 上直角三角形输出
- 安装JDK1.8出现 Error opening registry key'software\Javasoft\Java Runtime Environment'
- 不打开Excel文件直接读取数据
- (011) java后台开发之泛型类
- flyerinternational国内IB增长同行表示担忧
- 用pygame写游戏 蚂蚁打蜘蛛侠 并升级
- 从架构演进的角度聊聊 Spring Cloud 都做了些什么?
- 输入一个数插入有序数组中
- Hibernate书写原生SQL语句查询(用于复杂多表查询)
- 容器服务节点重启操作最佳实践
- 汽车广告
- Spring学习--aop学习记录