`

java对list的泛型,非严格检查

 
阅读更多
public class Student {
	String name;
	String age;

}
public class sheep {
	int num;
	int year;
	int sex;
	long sell;
}

public class Doctor {
	String name;
	String age;
	String sex;
	String salary;
}
	 * @param args
	 */
	public static void main(String[] args) {

		Student s=new Student();
		//类型固定的不能转,转自动报错
		//(Doctor)s
		s.name="zhangs";
		s.age="20";
		//在list里边,则不会报错
		List l=new LinkedList();
		l.add(s);
		List<Doctor> l2=(List<Doctor>)l;
		List<sheep> l3=(List<sheep>)l;
		System.out.println(l2.get(0));
		System.out.println(l3.get(0));

                  //如果定义list时用了泛型,则报不能转换
		List<Student> list=new LinkedList();
		list.add(s);
		List<Doctor> list2=(List<Doctor>)list;
	}
l2,l3中仍然是student对象。

当然,如果list写成某个对象的泛型,一定会检查。
List<T> 表示 集合里 是 T类的实例
List<E> 表示  集合里 是  E类的实例
List<?> 表示 集合里的对象类型不确定,未指定
List 同 List<?>
泛型的作用:
1::: List<T> list=new ArrayList<T>();
T t=list.get(0);
2:::List  list=new ArrayList();
T t=(T)list.get(0);
相信你已经看出:用泛型只是确定了集合内的元素的类型,取出来时已经不再需要强转
分享到:
评论

相关推荐

    Java泛型技术之发展

    Java泛型技术的发展不仅标志着编程语言对类型安全和代码复用的重视,也反映了软件工程领域对模块化、复用性和维护性的不断追求。自JDK1.4以来,泛型技术已成为Java开发不可或缺的一部分,极大地提升了开发效率和代码...

    Java泛型类型擦除后的补偿

    - 尽管泛型在运行时不存在,但编译器会进行严格的类型检查。如果尝试插入不匹配的类型,编译器会抛出错误。 - 例如,尝试向 `List&lt;String&gt;` 添加一个整数会导致编译错误,确保了类型安全。 3. **通配符**: - ...

    泛型JAVA指南.pdf

    Java的泛型提供了比C++模板更严格的类型检查,但以类型擦除作为实现的代价。这意味着Java泛型在类型安全的同时牺牲了一些性能。 泛型的具体应用在Java的集合框架中尤为突出。例如,Collection接口就是一个泛型接口...

    java泛型学习

    - **类型安全**:尽管实现了类型擦除,Java 泛型依然能提供类型安全,这得益于编译器的严格检查。 #### 三、泛型非协变性 - **协变与反协变**:Java 数组是协变的,即 `Integer[]` 可以被视为 `Number[]`。然而,...

    简单理解java泛型的本质(非类型擦除)

    在编译时,Java会检查泛型的使用,确保所有操作都是合法的,避免了不必要的类型转换和可能的运行时错误。 6. **集合的泛型**:在集合框架中广泛应用了泛型,如`List&lt;T&gt;`、`Set&lt;T&gt;`和`Map, V&gt;`,这使得我们可以指定...

    JAVAfanxing.rar_泛型

    Java 泛型是Java语言中的一...总的来说,Java泛型提供了一种强大的工具,使我们能够在编写代码时进行更严格的类型检查,减少运行时错误,提高代码的可读性和可维护性。理解和掌握泛型是成为专业Java开发者的必备技能。

    实例分析Java泛型

    这是因为Java在运行时没有对数据类型进行严格的检查。 然后,我们看到了使用泛型的例子`Generics`。在这里,我们创建了两个泛型列表,一个用于存储字符串`List&lt;String&gt; stringList`,另一个用于存储整数`List...

    Java泛型类型通配符和C#对比分析

    而在C#中,泛型约束提供了更严格的类型检查,允许更精确的类型控制,但也可能需要更多的代码来实现相同的功能。两者各有优劣,取决于具体的应用场景和需求。理解这两种机制的差异对于编写高效、安全的代码至关重要。

    java范型[参考].pdf

    泛型允许我们在编写类、接口和方法时指定一种或多种类型参数,使得代码能够处理多种不同类型的对象,同时在编译时进行严格的类型检查,避免了运行时的类型转换异常。 在泛型引入之前,Java集合框架中的类如`List`,...

    java-jdk-8u231-windowsx64修复bug.rar

    在8u231版本中,对此类情况进行了更严格的检查,提供更清晰的错误提示,帮助开发者避免这类问题。 在Java开发过程中,使用最新的JDK版本至关重要,因为它通常包含了对已知问题的修复和性能提升。对于Java JDK 8u231...

    core java 7th上

    8. **泛型**:Java 5引入了泛型,使得代码更安全、类型检查更严格。泛型可以限制容器元素的类型,减少强制类型转换,提高代码的可读性和复用性。 9. **NIO(非阻塞I/O)**:Java NIO是一种新的I/O模型,相比传统的...

    JAVA_javacode_

    在高级特性方面,Java引入了泛型(Generics),允许在类、接口和方法中使用类型参数,提供更强的类型检查和代码重用。例如,一个泛型栈的实现可能如下: ```java public class Stack&lt;T&gt; { private T[] elements; ...

    Java SE 复习资料

    9. **泛型**:泛型是Java 5引入的新特性,用于增强类型安全,减少类型转换,并允许编译器进行更严格的检查。理解和运用泛型,可以编写出更清晰、更安全的代码。 10. **枚举与注解**:枚举提供了一种安全的方式来...

    JAVA语言入门(CHM) JAVA语言入门(CHM)

    3. **健壮性**:Java通过严格的编译时检查和运行时异常处理机制来提高程序的稳定性。 4. **安全性**:Java提供了一个安全沙箱环境,可以防止恶意代码的执行。 5. **平台独立性**:Java程序只需要编写一次,就可以在...

    java学习16天java学习java学习16天java学习

    8. **泛型**:泛型是Java 5引入的特性,允许在编译时检查类型安全,减少类型转换错误。 9. **接口与模块化**:Java 8引入了默认方法,Java 9引入了模块系统,提升了代码的可维护性和复用性。 10. **反射与注解**:...

Global site tag (gtag.js) - Google Analytics