Jave中的泛型的使用

本文深入探讨了Java中的泛型特性,包括如何创建和使用泛型类,展示了如何定义和实现泛型接口,以及如何声明和调用泛型方法。通过实例代码解释了泛型在类、接口和方法中的应用,帮助读者理解泛型在实际编程中的重要性。
摘要由CSDN通过智能技术生成

1.创建泛型类以及使用该类

先创建一个MyGeneric<T>泛型

/**
 * 泛型类
 * 语法:类名<T>
 *     T是类型占位符,表示一种应用类型,如果编写多个使用逗号隔开
 * </T>
 */
public class MyGeneric<T> {
    //使用泛型T
    //1.创建变量
    T t;
    //2泛型作为方法的参数
    public void show(T t)
    {
        System.out.println(t);
    }
    //3泛型作为方法的返回值
    public T getT()
    {
        return t;
    }


}

然后创建一个测试类

public class TestGeneric {
    public static void main(String args[])
    {
        //使用泛型类创建对象
        //注意:1.泛型类只能使用引用类型,2不同泛型对象不能相互复制
        MyGeneric<String> myGeneric=new MyGeneric<String>();
        myGeneric.t="hello";
        myGeneric.show("大家好");
        String string =myGeneric.getT();
        MyGeneric<Integer> myGeneric2=new MyGeneric<Integer>();
        myGeneric2.t=100;
        myGeneric2.show(200);
        Integer integer=myGeneric2.getT();
    }
}

 2.泛型接口

先创建一个泛型接口

/**
*泛型接口
 * 注意:不能泛型静态常量
 *
 */
public interface MyInterface<T> {
    String name="张三";
    T server(T t);
}

两种方法实现该接口

法一:实现泛型接口,并在创建时就决定泛型的数据类型

/**
 * 实现泛型接口,并在创建时就决定泛型的数据类型
 */
public class MyInterfaceImpl implements MyInterface<String> {
    @Override
    public String server(String t)
    {
        System.out.println(t);
        return t;

    }

}

法二:创建泛型类,由创建的泛型的数据类型的参数决定泛型接口的数据类型

/**
 * 创建泛型类,由创建的泛型的数据类型的参数决定泛型接口的数据类型
 */
public class MyInterfaceImpl2<T> implements  MyInterface<T> {

    @Override
    public T server(T t) {
        System.out.println(t);
        return null;
    }
}

3.泛型方法的创建

/**
 * 泛型方法,语法:<T> 返回值类型
 */
public class MyInterfaceImpl  {
    //泛型方法
    public <T> T show (T t) {
        System.out.println("泛型方法" + t);
        return t;
    }


}

Java泛型主要用于集合类、类和接口的定义,以及方法的参数和返回类型。下面是一些泛型的具体使用方式: 1. 定义泛型类:可以在类名后面使用尖括号 `<T>` 来表示该类是一个泛型类,其的 `T` 代表类型参数。例如:`public class MyGenericClass<T> { ... }` 2. 定义泛型接口:与泛型类类似,可以在接口名后面使用尖括号 `<T>` 来表示该接口是一个泛型接口。例如:`public interface MyGenericInterface<T> { ... }` 3. 使用泛型类型参数:在类或接口内部,可以使用泛型类型参数 `T` 来声明成员变量、方法参数、返回类型等。例如:`private T myVariable;`、`public void myMethod(T parameter) { ... }`、`public T myMethod() { ... }` 4. 泛型通配符:可以使用 `?` 表示任意类型的通配符。例如:`List<?> myList;` 表示一个未知类型的列表。 5. 限定泛型类型参数:可以使用 extends 关键字来限定泛型类型参数的上界。例如:`public class MyGenericClass<T extends Number> { ... }`,表示 `T` 必须是 Number 类或其子类。 6. 泛型方法:可以在方法的返回类型前面使用 `<T>` 来定义泛型方法。例如:`public <T> void myMethod(T parameter) { ... }`,其的 `<T>` 表示该方法是一个泛型方法。 通过使用泛型,可以在编译时进行类型检查,避免了在运行时出现类型转换错误。同时,泛型还能提高代码的可读性和安全性,使代码更加灵活和通用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KD66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值