泛型知识----java小知识

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、泛型是什么?

泛型是程序语言的一种特性。在编程中用泛型来代替某个实际类型,而后通过实际调用时传入或推导的类型来对泛型进行替换,已达到 代码复用 的目的。泛型是JDK5引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。
***泛型的好处:***首先,统一数据类型;其次,把运行时期的问题提前至编译时期,避免了强制类型转换可能出现的异常,因为编译阶段类型就能确定下来。
注意:
泛型只支持引用数据类型。
泛型的格式:<T>”(其中“T”也可以用其他字母代替)

二、使用步骤

1.泛型类

泛型类就是在类声明时通过一个标识表示类中某个属性的类型或者是某个方法的返回值和参数类型。只有用户使用该类的时候,该类所属类型才能明确。
泛型类的声明格式:

[访问权限] class 类名称<泛型标识1,泛型标识2...,泛型标识n>;
	[访问权限] 泛型类型标识 变量名称;
	[访问权限] 泛型类型标识 方法名称;
	[访问权限] 返回值类型声明 方法名称 (泛型类型标识 变量名称){};

代码如下:

import java.util.ArrayList;
import java.util.List;

public class dem {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		List<String> lists=new ArrayList<>();
		lists.add("java");
		lists.add("OS");
		lists.add("mysql");
		lists.add("java");
		lists.add("java");
		lists.add("c#");
		for (String string : lists) {
			System.out.println(string);
		}
	}
}

运行结果:
java
OS
mysql
java
java
c#

***作用:***编译阶段可以指定数据类型。
***原理:***把出现泛型变量的地方全部替换成传输的真实数据类型。

2.泛型方法

定义方法时同时定义了泛型的方法,就是泛型方法。
泛型方法的格式:[访问权限] <泛型标识> 返回值类型 方法名称 (泛型标识 参数名称)
范例:public <T> void show(T t){}
代码如下(示例):
//将数组转化为字符串并输出

public class dem2 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Integer[] arr= {1,2,3,5};   //整型数组
		Double[]  dou= {1.2,2.3};   //Double型数组
		putArray(arr);
		putArray(dou);
	}
	public static <T> void putArray(T[] t) {
		StringBuilder str=new StringBuilder();
		str.append("[");
		for (int i=0;i<t.length;i++) {
			str.append(t[i]).append(i==t.length-1? "":",");
		}
		str.append("]");
		System.out.println(str);
		}
}
}

结果:

[1,2,3,5]
[1.2,2.3]

***作用:***方法中可以使用泛型接受一切。

3.泛型接口

使用泛型定义的接口就是泛型接口;
泛型接口的格式:[访问权限] interface 接口名称<泛型标识>{}
范例:public interface Data<T>{}
代码如下(示例):

import java.util.ArrayList;
import java.util.List;
interface car1<T>{
	void show (T t); 
}
class car implements car1<car>{
	private String carName;

	public car() {
		super();
	}

	public car(String carName) {
		this.carName = carName;
	}

	public String getCarName() {
		return carName;
	}

	public void setCarName(String carName) {
		this.carName = carName;
	}
	
	public void show (car c) {
		System.out.println(c.getCarName());
	}
}
public class dem {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		List<car> lists=new ArrayList<>();
		lists.add(new car("玛莎拉蒂"));
		lists.add(new car("五菱宏光"));
		for (car car : lists) {
			car.show(car);
		}
	}
}

结果:

玛莎拉蒂
五菱宏光

***作用:***泛型接口可以让实现类选择当前功能需要操作的数据类型。泛型接口可以约束实现类,实现类可以在实现接口的时候传入自己操作的数据类型这样可以重写的方法都是针对该类型的操作。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值