Java中的泛型

泛型:JDK1.5版本以后出现新特性。用于解决安全问题,是一个类型安全机制。

好处
1.将运行时期出现问题ClassCastException,转移到了编译时期。
方便于程序员解决问题。让运行时问题减少,安全。

2,避免了强制转换麻烦。
泛型格式:通过<>来定义要操作的引用数据类型。
在使用java提供的对象时,什么时候写泛型呢?

通常在集合框架中很常见,
只要见到<>就要定义泛型。

其实<>就是用来接收类型的。

当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。

class GenericDemo 
{
	public static void main(String[] args) 
	{

		ArrayList<String> al = new ArrayList<String>();

		al.add("abc01");
		al.add("abc0991");
		al.add("abc014");

		//al.add(4);//al.add(new Integer(4));
		

		Iterator<String> it = al.iterator();
		while(it.hasNext())
		{
			String s = it.next();

			System.out.println(s+":"+s.length());
		}
	}
}


import java.util.*;
class GenericDemo2 
{
	public static void main(String[] args) 
	{
		TreeSet<String> ts = new TreeSet<String>(new LenComparator());

		ts.add("abcd");
		ts.add("cc");
		ts.add("cba");
		ts.add("aaa");
		ts.add("z");
		ts.add("hahaha");


		Iterator<String> it = ts.iterator();

		while(it.hasNext())
		{
			String s = it.next();
			System.out.println(s);
		}
	}
}


class LenComparator implements Comparator<String>
{
	public int compare(String o1,String o2)
	{
		int num = new Integer(o2.length()).compareTo(new Integer(o1.length()));

		if(num==0)
			return o2.compareTo(o1);
		return num;
	}
}




摘自《毕向东25天》

### Java 与 Python 特性的对比 #### 类安全性和编译期检查 Java提供了一种机制,在编译期间确保类的安全性,防止运行时发生 `ClassCastException` 这样的异常[^1]。相比之下,Python 是动态类的编程语言,变量可以在程序执行过程中改变其数据类,因此不支持类似的静态类检查。 #### 参数化类定义 在 Java 中可以创建参数化的类和接口,允许开发者指定多个类参数用于实例化对象或声明方法返回值以及形参列表中的占位符。例如: ```java public class Box<T> { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } ``` 而 Python 利用抽象基类(ABCs)模块提供了对容器的支持,并通过 typing 模块引入了类似于的概念,但这些并不是真正的实现而是为了更好地表达意图并辅助 IDE 和 linter 工具理解代码结构: ```python from typing import TypeVar, Generic T = TypeVar('T') class Box(Generic[T]): def __init__(self): self._content = None def put(self, item: T) -> None: self._content = item def take(self) -> T | None: return self._content ``` #### 实现细节差异 由于 JVM 对象模的原因,Java 使用擦除法处理信息;也就是说,在字节码层面所有的具体类都被替换成了它们最接近的公共父类或者接口。这使得不同实际类实例共享相同的运行时表示形式。然而这种做法也带来了局限性——比如无法创建带有原始类的数组、不能捕获具体的异常等。 另一方面,尽管 Python 提供了一些模拟行为的方式,但在底层并没有真正意义上的概念。typing 模块所提供的功能更多是为了增强可读性和工具友好度而非影响最终解释器的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值