泛型变量、泛型类

本文探讨了泛型在软件工程中的重要性,特别是在创建可重用组件方面。通过使用泛型,开发者能创建出既支持当前数据类型又能适应未来数据类型的组件,增加了代码的灵活性和可维护性。文章详细解释了泛型的概念,如何在C#和Java等语言中使用泛型,并通过具体的代码示例展示了泛型类的实现。
摘要由CSDN通过智能技术生成

泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。
像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。这样用户就可以以自己的数据类型来使用组件。

通俗理解:泛型就是解决类 接口 方法的复用性、以及对不特定数据类型的支持。

any实现同时返回string类型和number类型
any放弃了类型检查
比如:传入number类型必须返回numer类型
传入string类型必须返回string类型

function getData(value:any):any{
	return 'test' // any:传入的参数和返回的参数可以不一致
}
getData(123)
getData('abc')

泛型

泛型:可以支持不特定的数据类型
要求:传入的参数和返回的参数类型一致

T表示泛型,具体什么类型是调用这个方法的时候决定的

function getData<T>(value:T):T{
	return value
}
getData<number>(911) // 911
getData<string>('abc') // abc

function getData<T>(value:T):any{
	return 'gg'
}
getData<number>(911)
getData<string>('hello')

泛型类

比如有个最小的堆栈算法,需要同时支持返回数字和字符串a-z两种类型
通过类的泛型来实现

class MinClass{
	list:number[]=[]
	add(num){
		this.list.push(num)
	}
	min():number{
		var minnum = this.list[0]
		for(var i=0; i<this.list.length; i++){
			if(minnum > this.list[i]){
				minnum = this.list[i]
			}
		}
		return minnum
	}
}

var m = new MinClass()
m.add(2)
m.add(3)
m.add(5)
m.add(17)
console.log(m.min())

类的泛型

class MinClass<T>{
	list:T[]=[]
	add(value:T):void{
		this.list.push(value)
	}
	min():T{
		var minNum = this.list[0]
		for(var i=0; i<this.list.length; i++){
			if(minNum > this.list[i]){
				minNum = this.list[i]
			}
		}
		return minNum
	}
}

var m = new MinClass<number>() // 实例化类,并且指定了T的类型是number
m.add(10)
m.add(8)
m.add(12)
console.log(m.min())

var m2 = new MinClass<string>()
m2.add('z')
m2.add('v')
m2.add('h')
console.log(m2.min())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值