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

原创 2016年08月31日 08:50:04

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

  今天我要跟大家分享的是泛型。什么是泛型?前面我给大家说了类,以及我们定义变量时需要用的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的方法,这个方法中我调用了泛型这个对象,但是我调用的时候必须要同时传入它的泛型类型,但是我那时并不知道它的类型,所以我便只有通过"?"这个符号,通配符来进行设置,不管上面调用什么类型,我这儿便转换为什么类型,从而达到类型一致,这便是通配符。泛型还未讲完,今天的泛型就跟大家分享到这儿,有什么错误或者问题都可以留言,我会尽快回答,谢谢。

版权声明:本文为博主原创文章,未经博主允许不得转载。

学习javascript基础知识系列第三节 - ()()用法

总目录: 通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在cons...
  • isea533
  • isea533
  • 2013年08月25日 13:13
  • 1598

Machine Learning on Spark——第三节 统计基础(一)

作者:周志湖 微信号:zhouzhihubeyond本文主要内容本文对了org.apache.spark.mllib.stat包及子包中的相关统计类进行介绍,stat包中包括下图中的类或对象: ...

html 第三节 (结构基础与超链接)

1.特殊字符(需要记住是&   ;  格式   且; 是英文模式) 2.div元素 超链接基础 1.绝对链接与相对链接 针对相对链接 要链接的文件位于当前页面所在文件夹的上一级文件夹时...

Linux大数据开发基础:第三节:用户和组

http://blog.csdn.net/lovehuangjiaju/article/details/47904673 本节主要内容 理解用户和组的概念用户管理组管理权限分配 ...

AJAX技术入门 第三节 DOM基础和DOM操作HTML

====================================================== 注:本文源代码点此下载 =============================...

第三节:scala-基础语法

定义变量scala> var hellowvar="hellowvar" hellowvar: String = hellowvar//重新赋值 scala> helloString="second...

javascript入门基础篇重点 第三节

数据类型number之NaN与Infinity的认知  NaN( not a number )typeof NaN ==> number isNaN() : is not a number // 是不...

Java 第三节 总结

3.1 运算符和表达式 算术运算符 加运算符+:连接两个字符串。例如,“abc”+12的结果为“abc12”;”abc”+1+2=?  “abc”+(1+2)=abc+3 Java语言既可对...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从零基础接触java第七周第三节
举报原因:
原因补充:

(最多只允许输入30个字)