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泛型技术的发展不仅标志着编程语言对类型安全和代码复用的重视,也反映了软件工程领域对模块化、复用性和维护性的不断追求。自JDK1.4以来,泛型技术已成为Java开发不可或缺的一部分,极大地提升了开发效率和代码...
- 尽管泛型在运行时不存在,但编译器会进行严格的类型检查。如果尝试插入不匹配的类型,编译器会抛出错误。 - 例如,尝试向 `List<String>` 添加一个整数会导致编译错误,确保了类型安全。 3. **通配符**: - ...
相比于 C++ 的模板,Java 的泛型提供了更严格的类型检查,且无需额外的运行时开销。 #### 三、泛型的重要性 在 Java 1.5 之前,集合类如 `List` 和 `Map` 等只能存储 `Object` 类型的对象。这意味着当需要特定类型...
Java的泛型提供了比C++模板更严格的类型检查,但以类型擦除作为实现的代价。这意味着Java泛型在类型安全的同时牺牲了一些性能。 泛型的具体应用在Java的集合框架中尤为突出。例如,Collection接口就是一个泛型接口...
- **类型安全**:尽管实现了类型擦除,Java 泛型依然能提供类型安全,这得益于编译器的严格检查。 #### 三、泛型非协变性 - **协变与反协变**:Java 数组是协变的,即 `Integer[]` 可以被视为 `Number[]`。然而,...
在编译时,Java会检查泛型的使用,确保所有操作都是合法的,避免了不必要的类型转换和可能的运行时错误。 6. **集合的泛型**:在集合框架中广泛应用了泛型,如`List<T>`、`Set<T>`和`Map, V>`,这使得我们可以指定...
Java 泛型是Java语言中的一...总的来说,Java泛型提供了一种强大的工具,使我们能够在编写代码时进行更严格的类型检查,减少运行时错误,提高代码的可读性和可维护性。理解和掌握泛型是成为专业Java开发者的必备技能。
这是因为Java在运行时没有对数据类型进行严格的检查。 然后,我们看到了使用泛型的例子`Generics`。在这里,我们创建了两个泛型列表,一个用于存储字符串`List<String> stringList`,另一个用于存储整数`List...
而在C#中,泛型约束提供了更严格的类型检查,允许更精确的类型控制,但也可能需要更多的代码来实现相同的功能。两者各有优劣,取决于具体的应用场景和需求。理解这两种机制的差异对于编写高效、安全的代码至关重要。
泛型允许我们在编写类、接口和方法时指定一种或多种类型参数,使得代码能够处理多种不同类型的对象,同时在编译时进行严格的类型检查,避免了运行时的类型转换异常。 在泛型引入之前,Java集合框架中的类如`List`,...
在8u231版本中,对此类情况进行了更严格的检查,提供更清晰的错误提示,帮助开发者避免这类问题。 在Java开发过程中,使用最新的JDK版本至关重要,因为它通常包含了对已知问题的修复和性能提升。对于Java JDK 8u231...
8. **泛型**:Java 5引入了泛型,使得代码更安全、类型检查更严格。泛型可以限制容器元素的类型,减少强制类型转换,提高代码的可读性和复用性。 9. **NIO(非阻塞I/O)**:Java NIO是一种新的I/O模型,相比传统的...
在高级特性方面,Java引入了泛型(Generics),允许在类、接口和方法中使用类型参数,提供更强的类型检查和代码重用。例如,一个泛型栈的实现可能如下: ```java public class Stack<T> { private T[] elements; ...
9. **泛型**:泛型是Java 5引入的新特性,用于增强类型安全,减少类型转换,并允许编译器进行更严格的检查。理解和运用泛型,可以编写出更清晰、更安全的代码。 10. **枚举与注解**:枚举提供了一种安全的方式来...
3. **健壮性**:Java通过严格的编译时检查和运行时异常处理机制来提高程序的稳定性。 4. **安全性**:Java提供了一个安全沙箱环境,可以防止恶意代码的执行。 5. **平台独立性**:Java程序只需要编写一次,就可以在...
2. 泛型(Generics):泛型是JDK 1.5之后引入的一个特性,它允许在编译时提供更严格的类型检查并消除类型转换。在文件中,涉及到将方法参数和返回值指定为泛型类型,并且给出了在原有代码基础上进行泛型改造时应该...
以上只是Java基础部分的一部分,实际上Java还有许多其他重要概念,如设计模式、并发编程、数据库交互(JDBC)、GUI编程(Swing或JavaFX)、泛型、注解等。熟练掌握这些知识是成为一名合格Java开发者的必备条件。通过...