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

  前面我跟大家简单地分享了多线程,但是我这儿少了进程和进程之间关系的生产者和消费者,以及线程池大家下来都可以去百度看看。

  今天我要跟大家分享的是泛型。什么是泛型?前面我给大家说了类,以及我们定义变量时需要用的int、float、double等数据类型,还有String等,如果在我们定义时,我们想定义一个不确定的类型,然后在我们调用的时候再来改变,这样就可以用泛型。那么先来看看泛型的写法吧,请看一下代码:

public class Test{
public static void main(String[] args){
Genericity<String> g = new Genericity<String>();
g.setName("张三");
System.out.println(g.getName());
}
}
class Genericity<T>{
T name;
public T getName() {
return name;
}
public void setName(T name) {
this.name = name;
}
}

首先大家可以看到,我在主函数test下面定义了一个泛型类,然后奇怪的是我在这个类后面加了个"<T>",这便表示定义了一个泛型T,而且定义在类的后面,当然,方法中也可以,现在大家先不管,然后,我通过定义的T,直接去在类里面定义了一个name和方法geName以及setName,也许因为是T你有些看不懂,但是,你把类里面的所有T换成String的话,也许你就会恍然大悟,哦,原来如此。然后,接下来大家看主函数我是如何调用这个泛型的,我按照常规先new了这个类,只不过在有两个地方加了<String>这样的样式,表示声明我这个泛型是String类型,然后我调用setName的时候,便可以直接传入字符串,但是如果我传入其他东西便会错误。如果我在调用时声明的是其他类型,比如integer,那么我便只能用数字,不能用字符串,关于泛型简单的了解便是这些了,大家下来可以多多研究研究。

  接下来我要给大家继续延伸泛型,首先,刚才代码中,我们只是单独地定义了一个泛型,然而,我们的泛型可以一次定义多个,比如以下代码:

public class Test{
public static void main(String[] args){
Genericity<String,Integer> g = new Genericity<String,Integer>();
g.setName("张三");
g.setAge(18);
System.out.println("姓名:"+g.getName()+",年龄:"+g.getAge());
}
}
class Genericity<T,K>{
T name;
K age;
public K getAge() {
return age;
}
public void setAge(K age) {
this.age = age;
}
public T getName() {
return name;
}
public void setName(T name) {
this.name = name;
}
}

关于以上代码我只是在T后面多加了泛型类型K,我相信不用我过多解释大家一眼就会明白,我要延伸的可不是这个,而是泛型中的通配符,什么是通配符,再看以下代码:

public class Test{
public static void main(String[] args){
Genericity<String,Integer> g = new Genericity<String,Integer>();
g.setName("张三");
g.setAge(18);
pln(g);
}
public static void pln(Genericity<?,?> g){
System.out.println("姓名:"+g.getName()+",年龄:"+g.getAge());
}
}
class Genericity<T,K>{
T name;
K age;
public K getAge() {
return age;
}
public void setAge(K age) {
this.age = age;
}
public T getName() {
return name;
}
public void setName(T name) {
this.name = name;
}
}

大家可以看到,我在主函数中又多加了个pln的方法,这个方法中我调用了泛型这个对象,但是我调用的时候必须要同时传入它的泛型类型,但是我那时并不知道它的类型,所以我便只有通过"?"这个符号,通配符来进行设置,不管上面调用什么类型,我这儿便转换为什么类型,从而达到类型一致,这便是通配符。泛型还未讲完,今天的泛型就跟大家分享到这儿,有什么错误或者问题都可以留言,我会尽快回答,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值