泛型应用

博客给出一段代码,展示了泛型在集合中的应用。通过定义Collection<? extends T> a,表明集合类型继承T类型,再使用增强for循环将a集合中的元素添加到b集合中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class Unit9_例四 {

此处Collection<? extends T>a,表明该集合类型继承T类型,用增强for循环,将a集合中的元素加入到b集合中

static<T> void aff (Collection<? extends T>a, Collection <T> b) {
	for(T ele : a) {
		b.add(ele);
	}
}

public static void main(String []args) {
	List<Object> arr = new ArrayList<>();
	arr.add("hello");
	List<String> brr = new ArrayList<>();
	brr.add("nice");
	aff(brr,arr);//将brr集合中的元素赋值到arr集合中去
	System.out.println(brr);
	System.out.println(arr);		
}

}

Scala中的(Generics)是一种强大的工具,允许开发者编写可重用的代码,同时保持类安全。在Scala中有多种应用场景,以下是一些常见的应用场景: 1. **集合类**: Scala的集合类(如List、Set、Map等)广使用了。例如,List[Int]表示一个包含整数的列表,List[String]表示一个包含字符串的列表。通过,集合类可以存储任意类的元素,而不会丢失类信息。 ```scala val intList: List[Int] = List(1, 2, 3) val stringList: List[String] = List("a", "b", "c") ``` 2. **函数参数**: 可以用于定义接受任意类参数的函数。例如,定义一个通用的排序函数,可以对任何类的列表进行排序。 ```scala def sortList[T](list: List[T])(implicit ord: Ordering[T]): List[T] = { list.sorted } val sortedIntList = sortList(intList) val sortedStringList = sortList(stringList) ``` 3. **类定义**: 在定义类时,可以使用来创建通用的数据结构。例如,定义一个通用的键值对类,可以存储任意类的键和值。 ```scala class Pair[K, V](val key: K, val value: V) { def getKey: K = key def getValue: V = value } val pair = new Pair(1, "one") println(pair.getKey) // 输出: 1 println(pair.getValue) // 输出: one ``` 4. **类约束**: 还可以用于在编译时对类进行约束。例如,定义一个函数,要求传入的参数必须是某个类的子类。 ```scala def printLength[T <: { def length: Int }](obj: T): Unit = { println(obj.length) } printLength("hello") // 输出: 5 printLength(List(1, 2, 3)) // 输出: 3 ``` 5. **隐式参数**: 可以与隐式参数结合使用,提供更灵活的代码。例如,定义一个通用的函数,依赖于隐式参数来实现特定的功能。 ```scala def printValue[T](value: T)(implicit ev: T => String): Unit = { println(value) } implicit def intToString(i: Int): String = i.toString printValue(123) // 输出: 123 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值