从零基础接触java第七周第四节

  上一节已经跟大家分享到了泛型的通配符方面了,本节将继续与大家分享泛型。

  关于泛型,除了通配符之外,还涉及了一个知识点便是extends和super,相信这两个单词大家一定很熟悉,没错,前面我们学过一个继承;一个超级,用于接收父类,那么便是这两个单词。这两个单词的作用,用于受限泛型,比如以下代码:

public class Test{
public static void main(String[] args){
Genericity g = new Genericity(18,1.78);
System.out.println(g.age+","+g.height);
Genericity<Integer> g1 = new Genericity<Integer>(12,28);
System.out.println(g1.age+","+g1.height);
}
}
class Genericity<T extends Number>{
T age;
T height;
public Genericity(){}
public Genericity(T age,T height){
this.age = age;
this.height = height;
}
}

以上代码中,我们在定义Genericity这个类的时候同时定义了泛型,大家可以看到,这次我们在泛型后面加了extends并且在extends后面加了Number这个限量,这儿extends表示的是上限,代表的意思是我们在后面调用泛型的时候,所调用的必须是Number的子类,级别比Number小的对象,不能调用超过它的,而Number中包含了Integer、float、double这三个数据类型,那么我们在主函数调用的时候,大家可以看到,由于构造函数也是用泛型定义的,泛型的上限是Number,表示只能用integer和float和double这三种类型,这儿我在主函数调用时便只加了数字,当我加字符串时编译器肯定会报错。然后我又第二次调用genericity这个类,大家可以看到,第二次我将泛型固定为integer,因为integer是Number的子类,级别小于Number,所以能成功调用,而且我构造函数的类型也固定为了整形。还有个事super,和extends意思相反,extends意思是上限,那么super肯定是下限,表示只能调用super后面级别跟大的,至于用法和entends一样,只需要将上面代码的extends改为super便是,但是super应用中较少,我就不做过多详解了。

  然后还要说一个接口泛型,请看以下代码:

interface Genericity<T extends Number>{
T fun();
}
class A<T> implements Genericity<Number>{
public Number fun() {
return null;
}
public T fun1(){
return null;
}
}

在以上代码中,接口的泛型定义了上限是Number,那么接收过来的方法返回类型也应该是继承过来的类型,而子类自己方法便可以定义自己的类型,而不能去改变父类的,关于接口泛型,还希望大家下去多多探讨一下,小编这儿不做过多解说较为简单。

  最后说的便是泛型方法,怎么定义一个泛型方法呢,请看以下代码:

public class Test{
public static void main(String[] args){
Genericity g = new Genericity();
int name = g.pln(18);
System.out.println(name);
}
}
class Genericity{
public <T extends Number> T pln(T name){
return name;
}
}

以上代码中,我们在Genericity中定义了一个pln方法,在public后面定义了一个泛型,然后跟着的是返回类型,返回类型为我们所定义的泛型,最后在方法名后面的括号中我们再输入了一个泛型类型的name,这便是在方法中定义了一个泛型,如果大家没看懂,可以把<T extends Number>这句代码删去放到类的后面,相信大家就会恍然大悟,原来这句话就是定义泛型,只不过放到方法后面于是就表示定义在方法内了其余返回类型和插入参数不变。那么这儿由于方法这限定的上限是Number,我们在主函数调用时自然也只能调用Integer以内的,随意我在主函数定义了一个int来接收。如果方法中的泛型不加上限的话,那么可以调用所有的参数类型。好了,关于泛型就全部说完了,也许还有些细节未说,毕竟我的分享主要是以最少的字来让大家最大化地迅速了解java,这样以后大家学习java时就好比已经学过一次但是只是懵懂,然后再复习一遍掌握更深,好了,本节的分享到此也结束了,有什么错误和问题希望大家评论提出,小编感激不尽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值