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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/M_F_X_B_K/article/details/52381529

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

上一节我们跟大家分享了,我们的多线程,要用runnable来实现,这样才能实现达到共同运用一个目标的目的。   昨天我跟大家举了一个卖票的案列,发现最后老是容易出现一个错误,就是有时会卖101张票,...
  • M_F_X_B_K
  • M_F_X_B_K
  • 2016年08月30日 08:50
  • 215

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

上一节已经跟大家分享到了泛型的通配符方面了,本节将继续与大家分享泛型。   关于泛型,除了通配符之外,还涉及了一个知识点便是extends和super,相信这两个单词大家一定很熟悉,没错,前面我们学...
  • M_F_X_B_K
  • M_F_X_B_K
  • 2016年09月01日 08:40
  • 120

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

上一节跟大家分享了多线程,然后那只是多线程的冰山一角,接下来继续与大家分享多线程。   上一节跟大家说到,多线程必须继承一个Thread类,然后实现里面的run方法,最后通过调用Thread里面的s...
  • M_F_X_B_K
  • M_F_X_B_K
  • 2016年08月29日 08:44
  • 283

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

上一节跟大家分享了static,今天,我与大家分享分享代码块,废话不多说,直接进入主题。   普通代码块,用于方法之中,列: class Examples{     public void co...
  • M_F_X_B_K
  • M_F_X_B_K
  • 2016年08月17日 08:47
  • 100

从零基础接触java第八章第三节

上一节和大家分享了arraylist和linkedlist的用法,今天我将与大家继续分享集合。   关于集合还有set,那么set当然也是一个接口,这个接口下面也有两个子类接口,这两个子类接口分别是t...
  • M_F_X_B_K
  • M_F_X_B_K
  • 2016年09月06日 17:30
  • 118

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

前面已经跟大家分享完异常了,这次只跟大家简单分享一下匿名内部类,补充一个我们前面没说过的,还有便是代码块还缺少的一个同步代码块。   首先我跟大家说说匿名内部类,什么叫匿名内部类,难道就是没有名字吗...
  • M_F_X_B_K
  • M_F_X_B_K
  • 2016年08月25日 09:02
  • 131

从零基础接触java第九章第三节

当你们把今天的分享听完后,大家便可以兴奋地告诉自己,我基本已经把java学完了,至于还有什么没学,在本篇结尾我会告诉大家。   上一节跟大家分享了字节流,今天跟大家延伸一下,除了字节流,还有字节缓冲...
  • M_F_X_B_K
  • M_F_X_B_K
  • 2016年09月12日 08:54
  • 164

machine-learning第七周 上机作业

大过年了,趁值班的清闲拾光多学点算法。这一周是流弊哄哄的SVM(支持向量机)算法。没有女神的解读根本看不懂视频啊。 有几个点: 1、女神说:“y=1时,随着z↑,h(x)逐渐逼近1,cost逐渐减小。...
  • dialoal
  • dialoal
  • 2016年02月05日 13:57
  • 937

中国大学MOOC-翁恺-C语言程序习题第七周

07-0. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。 ...
  • Phenixfate
  • Phenixfate
  • 2015年01月20日 14:25
  • 1677

Machine Learning第七周笔记:支持向量机

今天在Cousera上学习了《Machine Learning》的第七周课程,这一周主要介绍了支持向量机(support vector machine),将学习笔记整理在下面。Support Vect...
  • MajorDong100
  • MajorDong100
  • 2016年04月06日 20:30
  • 1395
收藏助手
不良信息举报
您举报文章:从零基础接触java第七周第三节
举报原因:
原因补充:

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