56 java集合和泛型_6 _泛型概述

本文深入讲解Java泛型的概念,包括泛型类、泛型接口和泛型方法的使用方法及注意事项,通过具体代码示例展示如何提升代码重用性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

56 java集合和泛型_6 _泛型概述

泛型

  1. Java泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递。

  2. 常见形式有泛型类、泛型接口、泛型方法。

  3. 语法:

    • T<…> T称为类型占位符,表示一种引用类型。
  4. 好处:

    • 提高代码的重用性
    • 防止类型转换异常,提高代码的安全性

泛型类

  1. 语法:类名, T称为类型占位符,表示一种引用类型,如果编写多个,要用逗号隔开
  2. 注意点:
    • 泛型只能使用引用类型
    • 不同泛型对象之间不能相互赋值

代码:

package com.wlw.collection.generic;

/**
 * 泛型类
 * 语法:类名<T>, T称为类型占位符,表示一种引用类型,如果编写多个,要用逗号隔开
 */
public class MyGeneric<T> {

    //1.创建变量,(可以创建变量,但不能实例化,就是不能new)
    T t;

    //2.T 可以作为方法参数
    public void show(T t){
        System.out.println(t);
    }

    //3.T 作为返回值
    public T getT(){

        return t;
    }
}
package com.wlw.collection.generic;
/*
    1.泛型只能使用引用类型
    2.不同泛型类型对象之间不能相互赋值
 */
public class TestGeneric {
    public static void main(String[] args) {
        MyGeneric<String> myDeneric1 = new MyGeneric<String>();
        myDeneric1.t = "hello";
        myDeneric1.show("hello everyone!");
        System.out.println(myDeneric1.getT());

        System.out.println("------------------------------");

        MyGeneric<Integer> myGeneric2 = new MyGeneric<Integer>();
        myGeneric2.t = 200;
        myGeneric2.show(300);
        System.out.println(myGeneric2.getT());
        
        //MyGeneric<String> myGeneric3 = myGeneric2; //不同泛型类型对象之间不能相互赋值
    }
}

/*
hello everyone!
hello
------------------------------
300
200
*/

泛型接口

  1. 语法:接口名
  2. 注意点:不能使用泛型创建静态常量
  3. 泛型接口的实现方式有两种:
    • 定义一个实现类,直接写出泛型
    • 定义一个泛型类,来实现这个泛型接口

代码:

package com.wlw.collection.generic;

/**
 * 泛型接口
 * 语法:接口名<T>
 * 注意点:不能使用泛型创建静态常量
 */
public interface MyInterface<T> {
    String name = "张三";

    public T service(T t);
}

package com.wlw.collection.generic;

public class MyInterfaceImpl implements MyInterface<String>{
    @Override
    public String service(String s) {
        return s;
    }
}
package com.wlw.collection.generic;

public class MyInterfaceImpl2<T> implements MyInterface<T>  {
    @Override
    public T service(T t) {
        return t;
    }
}
package com.wlw.collection.generic;

public class TestGeneric {
    public static void main(String[] args) {

        MyInterfaceImpl myInterfaceImpl = new MyInterfaceImpl();
        System.out.println(myInterfaceImpl.service("大家好!"));

        MyInterfaceImpl2<Integer> myInterfaceImpl2 = new MyInterfaceImpl2<Integer>();
        System.out.println(myInterfaceImpl2.service(200));

    }
}
/*
大家好!
200
*/

泛型方法

  1. 语法: 返回值类型

代码如下:

package com.wlw.collection.generic;

/**
 * 泛型方法
 * 语法:<T> 返回值类型
 */
public class MyGenericMethod {

    public <T> T show(T t){
        System.out.println("泛型方法:"+t);
        return t;
    }
}
package com.wlw.collection.generic;
/*
    1.泛型只能使用引用类型
    2.不同泛型类型对象之间不能相互赋值
 */
public class TestGeneric {
    public static void main(String[] args) {

        //泛型方法
        MyGenericMethod myGenericMethod = new MyGenericMethod();
        String s = myGenericMethod.show("中国加油!");
        Integer integer = myGenericMethod.show(200);
        Double d = myGenericMethod.show(3.14);

    }
}

/*
泛型方法:中国加油!
泛型方法:200
泛型方法:3.14

*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

悬浮海

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

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

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

打赏作者

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

抵扣说明:

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

余额充值