泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且有编译器来保证类型的正确性(不在运行时才检查出来)
可以暂时不指定类型,而是稍后再决定具体使用什么类型,可以使用类型参数,用尖括号括住,放在类名后面。然后在使用这个类的时候,再用实际的类型替代此类型参数。T就是类型参数。
一、泛型类<T>
在定义一个类时,后面使用<T>
在构造方法中,使用泛型
class Con<T>{
private T value;
public Con(T value){
this.value = value;
}
}
指定多个泛型
Class Gen<K,V>{
private K key;
private V value;
public T getKey(){
return key;
}
public void setKey(K key){
this.key = key;
}
public T getValue(){
return value;
}
public void setValue(V value){
this.value= value;
}
}
二、泛型接口
接口使用泛型,与类使用泛型一样
interface GenInter<T>{
public void say();
}
class Gin<T> implements GenInter<T>{
private T info;
@Override
public void say(){
}
}
public class GrenericDemo05{
public static void main(String[] args){
Gin<String> g = new Gin<String>();
}
}
三、泛型方法:使得该方法能够独立于类而产生变化。
使用原则:尽量使用泛型方法,如果泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法。
对于static的方法,无法访问泛型类的类型参数,如果static方法需要使用泛型能力,就必须使其成为泛型方法。
定义泛型方法:只需将泛型参数列表置于返回值
例如:
class Gener{
public <T> T tell(T t){
return t;
}
}
public class GenericDemo{
public static void main(String[] args){
Gener g = new Gener();
String str = g.tell("abc");
}
}
四、匿名内部类:泛型可以应用于内部类以及匿名内部类
五、通配符
public class GenericDemo{
public static void main(String[] args){
Info<String> i = new Info<String>();
Info<Integer> i = new Info<Integer>();
}
public static void tell(Info<?> i){
System.out.println(i)
}
}
六、泛型数组
pubilc class GenericDemo{
public static void main(String[] args){
Integer arr [] = {1,2,3,4}
tell(arr);
}
public static <T> void tell(T arr[]){
}
}
相关推荐
Java反射和泛型是Java编程中的两个重要特性,它们各自为开发者提供了强大的功能,并且在特定情况下可以相互结合使用。本文将深入探讨这两个概念,并通过一个具体的`Testrefl.java`示例来阐述它们的应用。 Java反射...
在Java编程语言中,多态性是面向对象设计的核心特性之一,它允许我们使用一个接口来引用不同的对象,使得代码更加灵活和可扩展。而泛型则是Java在JDK 5.0引入的一个强大特性,它允许我们在编译时检查类型安全,并且...
在Java编程领域,反射、泛型和注解是三个非常重要的特性,它们为代码提供了高度的灵活性和可扩展性。在本实战项目中,我们将深入探讨如何利用这些特性实现一个类似Spring框架的核心注入机制,即控制反转(Inversion ...
IO流在Java中是用来处理输入输出操作的核心机制。它允许程序与外部设备(如硬盘、键盘、网络等)进行数据交换。Java IO流分为字节流和字符流,又有输入流和输出流之分。字节流处理单个字节的数据,而字符流处理...
本篇文章将深入探讨Java泛型的发展历程、核心概念以及其在实际开发中的应用。 1. **发展历程** - **早期版本的局限**:在Java泛型出现之前,程序员通常使用Object作为容器类(如ArrayList、HashMap等)的默认类型...
### 三、泛型使用 1. **类型通配符**: 类型通配符`?`用于表示未知的类型。分为两种情况: - **上限通配符**:使用`? extends SomeType`表示类型参数是`SomeType`或其子类。例如,`List<? extends Number> list1`...
通过学习和练习这些内容,你可以深入理解Java集合框架的核心概念和泛型的应用,从而在编程实践中更加灵活和高效地处理数据。同时,不断的学习和实践是提升技能的关键,希望你能在Java世界中不断进步。
Java集合与泛型是Java编程中非常核心的概念,它们为处理数据集合提供了一套丰富的接口和类库。在Java中,集合框架主要位于java.util包中,它提供了一套性能优化、设计精良的接口和类。泛型(Generics)是Java SE 5.0...
在现代软件开发中,泛型作为一种强大的类型安全机制,被广泛应用于各种编程语言中,尤其是Java。泛型允许开发者编写灵活且可重用的代码,同时避免了运行时类型检查错误。在Java中,泛型工具类的构建对于实现通用功能...
Java集合框架是Java编程语言中用于存储和管理对象的核心组件,它包括了各种接口和类,为处理数据提供了丰富的选择。在本次实验中,我们深入学习了Java集合框架中的两个主要部分:List接口和Map接口,以及它们的主要...
泛型的核心思想是确保类型的正确性和安全性,避免在运行时出现类型转换异常(ClassCastException)。Java泛型的一个重要应用是在集合框架中。在JDK 1.5之前,Java集合类框架使用Object作为元素类型,这意味着集合...
接下来,我们来探讨泛型的一些核心特性: 1. **类型擦除**:Java泛型在编译后会被擦除,这意味着在运行时,泛型类和非泛型类是相同的。类型参数被替换为它们的边界类型(通常是`Object`)。因此,泛型的主要优势...
本篇文章将带你入门Java泛型,通过实例深入理解其核心概念。 1. **泛型的基本概念** - 泛型是一种允许在定义类、接口和方法时使用类型参数的机制。这使得代码可以在编译时期检查类型,避免了不必要的类型转换,并...
本篇文章将深入探讨Java泛型的发展历程、核心概念以及其在实际开发中的应用。 1. **发展历程** Java泛型的引入是为了解决早期版本中类型转换频繁和潜在的ClassCastException问题。在Java泛型出现之前,集合框架...
泛型的一个核心概念是类型擦除。在编译期间,Java会将泛型信息进行类型擦除,将所有类型参数替换为它们的边界类型或者Object,这被称为“擦除”。因此,泛型并不改变运行时的行为,它们的主要作用在于编译时的类型...