Java-泛型

        一般的类和方法,只能使用具体的类,要么是基本类型,要么是自定义类型。如果要编写可以应用于多种类型的代码,就需要使用泛型。

        在没有泛型的编程场景中,所有接口和方法的入参类型都是固定的,如果要使用其他类型的入参就需要做显式的强制类型的转换,而泛型是一个通用的类型解决方法,接口和方法入参并没有指定特定的类型,处理逻辑被封装在泛型或泛型方法内部,降低了程序运行时类型转换异常的风险。

        泛型是jdk1.5引入的新特性,其本质是参数化类型,也就是说所操作的数据类型可以被指定一个参数,参数分别有泛型类、泛型接口和泛型方法。

泛型类

        和正常类声明相似,泛型类的声明需要使用class关键字,但是不需要在类名后面添加类型参数声明。泛型类声明格式如下:

class[类名]<T>

        其中,字母T表示泛型类型,它并没有指定特定的类型,可以是除了基本类型外的任何对象或接口。我们可以使用二十六个英文中的任意一个大写字母来表示泛型

public class workGeneric<T>{
    private T name;
    private List<T> desc;
    public void setName (T name){
        this.name=name;
    }
    public T getName() {
        return name;
    }
    public void setDesc(List<T> desc) {
        this.desc = desc;
    }

    public List<T> getDesc() {
        return desc;
    }
}

        泛型类的类型参数声明可以包含多个类型参数,参数之间需要用逗号隔开

public class towGeneric<T,S,U> {
    private T name;
    private List<S> desc;
    private U age;
}

        泛型类型定义的类型,可以在类中用来定义成员属性或成员方法的返回值。实际使用时,可以使用具体的类型来替换泛型变量(如泛型类T),将泛型类对象实例化后进行操作


public class threeGeneric {
    public static <T extends Comparable<T>> T max(T x,T y){
        T max =x;
        if(y.compareTo(max)>0)
            max=y;
        return max;
    }

    public static void main(String[] args) {
        System.out.printf("%d和%d中最大的数为%d\n\n",10,11,max(10,11));
        System.out.printf("%.1f和%.1f中最大的数为%.1f\n\n",1.3,1.4,max(1.3,1.4));
        System.out.printf("%s和%s中最大的数为%s\n","red","blue",max("red","blue"));
    }
}


泛型方法

        我们可以定义泛型方法在调用时接收不同类型的参数。泛型方法定义格式如下:

[权限方法修饰符]<参数类型列表>返回值 方法名称([参数列表]);

        泛型方法和其他方法的声明其实是一样的,需要注意类型参数只能是引用类型,而不是基本类型(如int、long、char等)

public class fourGeneric {
    public <T> void toString(T t){
        System.out.println("入参"+t+"包装类型为:"+t.getClass().getName());
    }

    public static void main(String[] args) {
        fourGeneric fourGeneric = new fourGeneric();
        fourGeneric.toString(1);
        fourGeneric.toString(1.234);
        fourGeneric.toString(Boolean.TRUE);
        fourGeneric.toString("Java编程");
    }
}

结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值