Java基础---泛型

蜂信物联FastBee平台https://gitee.com/beecue/fastbee

阿里资料开源项目https://gitee.com/vip204888

百度低代码前端框架https://gitee.com/baidu/amis

OpenHarmony开源项目https://gitcode.com/openharmony

仓颉编程语言开放项目https://gitcode.com/Cangjie

定义格式:

修饰符 class 类名<代表泛型的变量> {  }

//此处T可以随便写为任意标识,创建的T,E,K,V等形式的的参数常用于表示泛型
public class Student<T> {
	//value这个成员变量的类型为T,T的类型由外部指定
    private T value;

    public Student(T value) {
        this.value = value;
    }

    public Student() {
    }
	
	//泛型方法getKey的返回值类型为T,T的类型由外部指定
    public T getValue() {
        return value;
    }

    public void setValue(T value) {
        this.value = value;
    }
}

2.2用泛型表示接口

泛型接口与泛型的定义及使用基本相同。

一般泛型接口常用于生成器(generator)中,生成器相对于对象工厂,是一种专门用来创建对象的类。

定义格式:

修饰符 interface 接口名<代表泛型的变量> {  }

//定义一个泛型接口
public interface Student<T>{
    public T ppp();
}

2.3用泛型表示方法

定义格式:

修饰符 <代表泛型的变量> 返回值类型 方法名(参数){  }

public class GenericMethods {
   public <T> void f(T x){
      System.out.println(x.getClass().getName());
   }
}

2.4泛型通配符

当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。

泛型的通配符:不知道使用什么类型来接收的时候,此时可以使用?,?表示未知通配符。

此时只能接受数据,不能往该集合中存储数据。

public class Hello {
    public static void main(String[] args) {
        List<String> name = new ArrayList<>();
        List<Integer> age = new ArrayList<>();
        List<Number> number = new ArrayList<>();
        name.add("小皮皮");
        age.add(20);
        number.add(337);
        generic(name);
        generic(age);
        generic(number);
    }

    private static void generic(List<?> data) {
        System.out.println(data.get(0));
    }
}

  • 上界通配符<? extends ClassType>该通配符为ClassType的所有子类型。它表示的是任何类型都是ClassType类型的子类。
  • 下界通配符<? super ClassType>该通配符为ClassType的所有超类型。它表示的是任何类型的父类都是ClassType
// 泛型的上限:此时的泛型?,必须是Number类型或者Number类型的子类
public static void getElement1(Collection<? extends Number> coll){}

// 泛型的下限:此时的泛型?,必须是Number类型或者Number类型的父类
public static void getElement2(Collection<? super Number> coll){}

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

[外链图片转存中…(img-uoXC7EPH-1725163066084)]

[外链图片转存中…(img-QM36r31K-1725163066085)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值