java 泛型类

Java泛型类的定义

泛型类是Java中一种非常实用的编程技巧,它允许我们在编译时为类或方法指定类型参数,从而实现代码的重用和类型安全,泛型类的定义主要包括以下几个部分:

1、使用关键字<T>表示泛型类型参数;

java 泛型类

2、在类名后面加上尖括号<T>,其中T表示泛型类型参数;

3、在类中定义泛型类型的成员变量和方法,并在方法签名中使用类型参数。

下面是一个简单的泛型类定义示例:

public class GenericClass<T> {
    private T data; // 泛型类型的成员变量
    public void setData(T data) { // 泛型类型的成员方法
        this.data = data;
    }
    public T getData() { // 泛型类型的成员方法
        return data;
    }
}

Java泛型类的使用

1、创建泛型类的对象

java 泛型类

在使用泛型类之前,需要先创建一个泛型类的对象,由于泛型类型参数在运行时才能确定,因此在创建对象时,需要为类型参数提供具体的类型,对于上面定义的GenericClass类,我们可以这样创建一个对象:

GenericClass<String> stringObj = new GenericClass<>();
stringObj.setData("Hello, World!");
String str = stringObj.getData();
System.out.println(str); // 输出:Hello, World!

2、实现泛型接口和继承泛型父类

泛型不仅可以用于类的定义,还可以用于接口和父类的定义,这样,我们可以在实现泛型接口或继承泛型父类时,使用泛型类型参数。

// 定义一个泛型接口
public interface GenericInterface<T> {
    void printData(T data); // 泛型类型的成员方法
}
// 实现泛型接口
public class GenericInterfaceImpl implements GenericInterface<String> {
    @Override
    public void printData(String data) {
        System.out.println(data);
    }
}
// 定义一个泛型父类
public abstract class GenericParent<T> {
    protected T data; // 泛型类型的成员变量
    public void setData(T data) { // 泛型类型的成员方法
        this.data = data;
    }
    public T getData() { // 泛型类型的成员方法
        return data;
    }
}

3、在方法中使用泛型类型参数

java 泛型类

在方法中,我们可以使用类型参数来表示该方法可以接受任意类型的参数,这使得我们可以在同一个类中编写通用的方法,而不需要为每个方法都编写重复的代码。

public class GenericMethodExample {
    public static <T> void printData(T data) { // 使用泛型类型参数的方法声明和定义
        System.out.println(data);
    }
}

4、在通配符上使用泛型类型参数(协变)和不使用通配符上使用泛型类型参数(逆变)的区别:在通配符上使用泛型类型参数时,子类必须实现或扩展父类中的泛型方法;而不使用通配符时,子类可以覆盖父类中的泛型方法,这种区别称为协变和逆变。

// 不使用通配符的协变示例:Animal是一个父类,Dog和Cat是它的子类,它们都需要实现printData方法。
public abstract class Animal<T> { // Animal是一个抽象类,不能直接实例化对象,需要继承它的具体子类才能实例化对象,这里省略了继承的具体代码。.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/235751.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年1月20日 11:16
下一篇 2024年1月20日 11:18

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入