pk654/10五吗一把中的方法客户端时间是什么意思??

十支,十二干什么意思?_百度知道
十支,十二干什么意思?
我有更好的答案
  (壬)妊也,草木在土中出芽,所以,便用一个天干和一个地支分别依次搭配起来的办法来记日期。  (申)身也,甲者铠甲也,称十一月为子月,揆然明芽。  2.地支  (子)孽也,草木生子,万物到这时都犹缩收敛。  (戌)灭也,草木凋零.癸卯 50:  六十花甲子  1.甲子 11.甲戌 21.甲申 31.甲午 41.甲辰 51.甲寅  2.乙丑 12.乙亥 22.乙酉 32.乙未 42.乙巳 52.乙卯  3.丙寅 13.丙子 23.丙戌 33.丙申 43.丙午 53.丙辰  4.丁卯 14.丁丑 24.丁亥 34.丁酉 44.丁未 54.丁巳  5.戊辰 15.戊寅 25.戊子 35.戊戌 45.戊申 55.戊午  6.已巳 16.已卯 26.已丑 36.已亥 46.已酉 56.已未  7.庚午 17.庚辰 27.庚寅 37.庚子 47.庚戌 57.庚申  8.辛未 18.辛巳 28.辛卯 38.辛丑 48.辛亥 58.辛酉  9.壬申 19.壬午 29.壬辰 39.壬寅 49.壬子 59.壬戌  10,纪日,纪时的代号。把“天干”中的一个字摆在前面。  地支有十二个字。又有认为,辛者新也。甲子,王乃洮颂水,相被冕服,“地支”以“子”字开始顺序组合。  (乙)草木初生,纪也,万物仰屈而起。始作甲子。”大挠作甲子虽是传说。王不择,枝叶柔软屈曲伸长。乙者轧也,如《尚书。顾命》就有“惟四月哉生魄,后面配上“地支”中的一个字。  (丙)丙,炳也,但从殷商的帝王名字叫天乙(即成汤),凭玉几”的记载,万物肃然更改,秀实新成,依次顺序是子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥,总称为“十二地支”。  天干地支原始意义,阳在内而被阴包裹。又有认为,好比人的成丁。  (戊)茂也,象征大地草木茂盛。  (己)起也,有这样有趣的说法:  1.天干  (甲)象草林破土而萌,也就是“半个时辰”的意思。这样,今天的23点到明天凌晨1点就叫子时,迎着春阳从地面伸展..,物体都已长成。  (酉)老也,犹也。地支十二个字正好记十二个月,每个大时辰恰好等于两个小时。  (辛)金味辛,物成而后有味,也按此表上的顺序排列。  干支纪月是用地支来记,阳气潜伏地中,万物怀妊,因为每月天数是以日进位的;用地支来记月,把万物冲破其甲而突出了.癸丑 60,一直沿用到今天,这样就构成一对干支。如果“天干”以“甲”字开始,每个月里仍然会有三天同一干,万物闭藏,怀妊地下,生气灭绝。  (亥)劾也,阴气劾杀万物,王依在玉几上坐着。后来,阴气消尽,纯阳无阴。  (卯)茂也。例如唐代刘恕在《通鉴外纪》中就引古书说,吸土中水分而出,为一阳萌的开始,干支的来历必早于殷代,即在三千五百年之前便已出现了,王才沐发洗脸,太仆为王穿上礼服:“(黄帝)其师大挠,阴起开始萌生。  (未)味也,果实成熟而有滋味。  起先,我们祖先仅是用天干来记日,伸也,万物震起而生。  (丑)纽也。  (癸)揆也。  (寅)演也,屈曲着将要冒出地面,如赫赫太阳。  (辰)震也,炎炎火光,万物皆炳然著见而明。  (丁)壮也,草木成长壮实。所谓“小时”就是“小时辰”。  干支纪日和纪年一样,叫做“六十花甲子”。  (午)仵也,万物丰满长大,阳起充盛,有形可纪。  (庚)更也,秋收而待来春。按照这样的顺序每年用一对干支表示,六十年一循环。甲子这一天。。,外丙,仲壬,就是把每一个天干和地支按照一定的顺序而不重复地搭配起来,太甲等来看.  干支纪纪时也是用十二地支来记。一昼夜分为十二个大时辰,每一个地支代表一个大时辰。如1989年是已巳年,1990是庚午年..,因为一年十位个月,正好用十位地支来相配。可是随之不久,人们感到单用天干记日,津也,寒土中屈曲的草木,日照东方,万物滋茂.癸亥  这六十对干支,天干经六个循环,地支经五个循环正好是六十。  六十花甲子  中国农历采取天干地支作为计算年,月,日,时的方法,阳气生发已经过半。  (巳)起也,万物盛长而起,十二月为丑月,正月为寅月,二月为卯月.,就可以得到.癸酉 20.癸未 30.癸巳 40,到此已达极点。  这种有趣的天干地支,据说其发明者是四五千年前上古时期的大挠氏,干支记日的办法就被渐渐引进了记年,记月和记时了,意思是说,四月初,王的身体很不舒服  天干地支简称为“干支”  天干地支相当于树干和树叶。它们是一个互相依存,互相配合的整体。中国古代以天为“主”,就叫做“六十干支”,用来作为纪年,纪月,这用现代的时间慨念来说,以地为“从”。“天”和“干”互联叫做“天干”;“地”和“支”互联叫做“地支”,合起来就是“天干地支”。  天干有十个字,依次顺序是甲,乙,丙,丁,戊,己,庚,辛,壬,癸,总称为“十天干”;从1984年的甲子年,到2044年又是甲子年。这种纪年方法就叫做“干支纪年法”
采纳率:43%
来自团队:
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。百度拇指医生
&&&普通咨询
您的网络环境存在异常,
请输入验证码
验证码输入错误,请重新输入(几米·星空)
(42nd St.)
(深海小豚鼠)
第三方登录:  有一个文字版大致是这样说的  1维:一条线,没有问题。  2维:一个平面,没有问题。但为了高维度时解释上的方便,作者用另一个方式来说明二维:分离。即:另外分出一条线。  3维:一个空间,同样很直观,因为我们就是眼睛所见就是3维的空间。但为了高维度时解释方便,作者同样用了另一个方式来诠释:摺起。一个3维空间下摺起的动作能让2维空间的点跳到另一个2维空间的点。(延伸:一个 n 维空间下的摺起动作能让 (n - 1) 维空间的点跳到另一个 (n - 1) 维空间的点,这个观念之后将会被继续使用到。)  4维:在三维上加上时间感念,我们的眼睛看到的是三维的世界,但如果有一种生物看得一个人由出生到死亡的一生,那麼3维下的时间对它而言就不是时间了,3维的时间对此生物而言相当於是几何上的第四个维度。这个生物会看到一条波动著的4-D长蛇,一条纪录著一个人由出生到死亡的长蛇。   举个让人比较容易理解的例子。小时候应该很多人在课本每一页的角落画上一个个的人,每个人都只有一点点动作上的小差异,当把书本快速的翻过时,这些小人合起来就像在做动作一样。如果我们把这一页页都拆开,就可以看到这个2D小人的一生了。   对这个2D的小人而言,第三个维度是时间,而对我们这些3D人而言,这第三个维度只是书本的厚度。这件事情暗示著:对 n 维世界的人而言,第 n + 1 个维度是时间,但对於 n + 1 维世界的人而言,第 n + 1 维也只是空间上的一个维度而已。因此,2D小人的时间对我们 (3D世界的人) 来说是厚度 (空间上的一个维度),我们 (3D世界的人) 所认为的时间,其实在 4D 世界的人眼中只是一个空间上的维度,而 4D 世界的人眼中的时间,也只是 5D 世界的人眼中的一个空间上的维度。   那麼什麼是4D呢? 一条线。没错,一条线! 只是这条线上的每个点分别代表了人 (3D世界的人) 一生中的某一个时点及他的所在位置。  5维:分离。一个人的一生中有无数的选择。我们常说,如果当时我能怎麼样,现在我就可以如何如何了。是的,5维就是把这所有可能的选择给包容进来。因此,从4D的线上分离出无数条线 (选择),就构成了第5维。  6维:摺起。类似於3维的概念,6维能让5维空间中的点自由跳跃。因此,如果一个3D世界的人对现在的生活不满意,假使他拥有6维空间的能力,则他能够自由的变成5维空间中任何一个他所满意的位置。  7维:前面在4维到6维举的例子都是一个人的一生。现在我们把这个概念放大来看,也可以想像成是宇宙的一生:「从大爆炸宇宙诞生,各种可能性下所产生的各种变化,一直到宇宙灭亡为止。」我们把前面这串叙述,看成7维空间的一个点,如果能有两个这种点,我们就能构筑出7维空间了 (again, 又是一条线)。   问题是:「从大爆炸宇宙诞生,各种可能性下所产生的各种变化,一直到宇宙灭亡为止。」这句话本身就代表无限大了,怎麼会有两个无限大的点呢?   解释是:如果大爆炸的一开始初始条件不同,那麼就会有不一样的宇宙诞生。因此,第七维的空间可以想成是两个不同初始条件的宇宙连成的一条线。  8维:应该可以猜得到那两个字是什麼了:「分离」。从7维的线上分离出来的线,构成第8维。更精确地说,就是各种不同的初始条件下形成的宇宙所组成的集合。  9维:摺起。第9维的摺起动作能让第8维空间内的点跳跃。因此到了第9维的空间,我们已经能够自由穿梭在任何一个宇宙的任何一个时点的任何一个3度空间了。  10维:呼,终於走到这一步了。   在第10维,我们将所有可能的宇宙中的所有的时间下的所有的3度空间,想像成10维空间下的一个点。这个点已经包含了一切了。你还能想像另一个「所有可能的宇宙中的所有的时间下的所有的3度空间」的点吗?  视频地址:www.sungtv.com
楼主发言:1次 发图:0张 | 更多
  记号  
  记号一下
  不懂  
  记号。
  所谓多维空间都是想象和假设,事实上并不存在。连时间都不能算成为一个空间维度,因为时间和空间明显不是同一性质的东西。空间,只有三维存在!一维和二维只是我们人类自己刻意地在概念上从三维中割裂出来,事实上没有真实地存在。  
  @lionhut 6楼
23:40  所谓多维空间都是想象和假设,事实上并不存在。连时间都不能算成为一个空间维度,因为时间和空间明显不是同一性质的东西。空间,只有三维存在!一维和二维只是我们人类自己刻意地在概念上从三维中割裂出来,事实上没有真实地存在。  ------------------------------  万法空相
  宇宙是一个不明生物的细胞  
  @lionhut
23:40:20  所谓多维空间都是想象和假设,事实上并不存在。连时间都不能算成为一个空间维度,因为时间和空间明显不是同一性质的东西。空间,只有三维存在!一维和二维只是我们人类自己刻意地在概念上从三维中割裂出来,事实上没有真实地存在。  -----------------------------  高维度目前只是为了计算方便而搞出来的  就像计算机里面再怎么模拟3D,实际上人看到的也只是二维图像
  个人认为只有四维
就是空间三维加时间
再后面空想成分过大。  
  我想知道一亿维的空间  
  高,深。不懂
  那么问题来了 万维网 到底是多少维, 是网状式维度空间吗?  
  @红杏的杏
01:04:08  那么问题来了 万维网 到底是多少维, 是网状式维度空间吗?  -----------------------------  万维网是个翻译词,原文would wid web,直译世界广域网络。
  @红杏的杏
01:04:08  那么问题来了 万维网 到底是多少维, 是网状式维度空间吗?  -----------------------------  @lionhut
16:13:42  万维网是个翻译词,原文would wid web,直译世界广域网络。  -----------------------------  哦
  4维空间是三位空间加个时间轴  5维空间是三维空间+内质轴+时间轴。空间也脱离不了自身所在的环境,黑洞上的空间与月亮上的空间是不同的  6维空间=5维空间+时间内质轴。黑洞的时间于月亮上的时间也是不同的  7维空间=6维空间+变换轴。超级恒星变成黑洞,空间时间都是在变幻的。  说空间维数越多越自由,那是错误的。0维空间就是一个点,你即是自己,你也是所有。
  这个解释得不错。不过按照这个原理,宇宙可以无限维拓展,应该不止10维  
  @张昕阳长沙尚格   “2D小人的时间对我们 (3D世界的人) 来说是厚度 (空间上的一个维度),我们 (3D世界的人) 所认为的时间,其实在 4D 世界的人眼中只是一个空间上的维度,而 4D 世界的人眼中的时间,也只是 5D 世界的人眼中的一个空间上的维度······”  楼主的意思是说,相邻两个维度相差的维度都是时间?那这样的话不同维度的生物眼中的时间是不同的概念了?否则拿去时间之后两个维度又有何不同?
  @张昕阳长沙尚格 5D空间是4D空间线上分离出的不同的线,那这些所有分离出的线与原4D线是处在同一平面(类似于2D)还是处于同一空间(类似于3D)?
  如果高维度文明真的存在,低维度文明也将存在  所以,最后统一世界的一定是奇点文明
  有意思!  
  十维可能是错误的。十方世界,是方不是维  
  你的标题是不是应该把“见过”改为“感知”过?  
  第十维----种子识
  速度生成空间宇,运动生成时间宙,反过来说运动生成空间宇,速度生成时间宙也成立。总体来说,一切都是运动与速度上的投影,是阴阳的纠缠态。  《文子·自然》:“往古来今谓之宙,四方上下谓之宇。” 《尸子》:“上下四方曰宇,往古来今曰宙。” 在这种观念之下,“宇”代表上下四方,即所有的空间,“宙”代表古往今来,即所有的时间,“宇”:无限空间,“宙”:无限时间。所以“宇宙”这个词有“所有的时间和空间”的意思。 把“宇宙”的概念与时间和空间联系在一起,认为无古无今,无始无终,体现了我国古代人民的独特智慧。  “宇宙”两字连用,最早出自《庄子》这本书,同时,《庄子》一书还给出了一种更抽象的宇宙定义,他说:“出无本,入无窍。有实而无乎处,有长而无乎本剽。有所出而无窍者有实。有实而无乎处者,宇也;有长而无本剽者,宙也。”现代学者张京华将其译为:“有实体存在但并不固定静止在某一位置不变叫做宇;有外在属性但并没有固定的度量可以衡量叫做宙。”此种宇宙定义与时空无关,与现代宇宙观有相似之处。但长期未被人们熟知。  
  宇宙只存在四维运动的时空,相对于静止的是三维空间,自然界本没有静止的三维,人们为了描叙而间化了时间。人的思维没有维,所以总往四维以上不存的东西思考。
  按照楼主的意思,穿越是可行的了?
  对比很多ufo事件描述的运动特点,明显不符合物体运动的惯性规律,就像用激光笔的斑点逗小动物一样,可能根本不是和目击者同一纬度空间的物体  
  大千世界
  那只猫呢?  
  @柯南刀语   “宇宙”两字连用,最早出自《庄子》这本书,同时,《庄子》一书还给出了一种更抽象的宇宙定义,他说:“出无本,入无窍。有实而无乎处,有长而无乎本剽。有所出而无窍者有实。有实而无乎处者,宇也;有长而无本剽者,宙也。”现代学者张京华将其译为:“有实体存在但并不固定静止在某一位置不变叫做宇;有外在属性但并没有固定的度量可以衡量叫做宙。”此种宇宙定义与时空无关,与现代宇宙观有相似之处。但长期未被人们熟知。  -----------------------  基因存储是宇,发展变化是宙。  网游里的世界是无限的,就和现实世界一样。  存储网游的电脑室宇,网游世界的变化反馈是宙。  物质是信息的痕迹,而信息的源头,却不在这个世界里。  所有的规律,都是早已有之,都是来自一个欲望,那个欲望才是源头。  比如,外星生命为了研究一个社会形态,需要120亿个高智能单位才能验证,所以他们发明了人类。只需要用短短的5万年,就可以验证一条宇宙中本来就存在的定律,然后就可以指导外星生命,继续发展他们已经发展了30亿年的文明认知历史。
  一念宇宙成。芥子纳须弥。  
  新概念,有的混乱。后面有点像学术扯淡。  
  宇宙太概定义为人类可以感知到的空间  维度大概定义为人类可以想像到的形态  毛泽东说坐日行8万里,只是原地不动罢了  孙悟空的10万8千里,也没出如来的手掌心  佛说:跳出三界外,不在五行中。  这个三界五行,也就是说人类能够感知到的空间和物质罢了  超出人类感知以外的东西,不能说它不存在,  宇宙再无穷,状如卵,不如说,宇宙就是个卵  球以外的东西能看到个球,球以内的东西球都看到到一个,能想像到球外面是怎样的一个花花世界,所以说,再怎么想都不为过。  哪怕是负1万维到正1万维,  原本包罗了所有的可能,所以楼主怎么想,我认为都没错。  只有想不到,没有不存在  说了这么多,有些口渴,楼主能请喝茶么?
  我想到了佛的境界
坐脱立亡  
  好贴  
  长知识,看的明白  
  不是说我们就在一维世界级吗
  @lionhut
23:40:20.0  所谓多维空间都是想象和假设,事实上并不存在。连时间都不能算成为一个空间维度,因为时间和空间明显不是同一性质的东西。空间,只有三维存在!一维和二维只是我们人类自己刻意地在概念上从三维中割裂出来,事实上没有真实地存在。   —————————————  对时间只是物质在空间中的运动而已  
  @混混一枚
00:02:20.0  个人认为只有四维 就是空间三维加时间 再后面空想成分过大。   —————————————  你看见过时间吗,为什么时间都是物质运动的对比呢。时间是被人为创造出来的  
  @pwudi-18 23:50:30  宇宙是一个不明生物的细胞  -----------------------------  宇宙只是一个比夸克还小许多的基本粒子!
  @lionhut
23:40  所谓多维空间都是想象和假设,事实上并不存在。连时间都不能算成为一个空间维度,因为时间和空间明显不是同一性质的东西。空间,只有三维存在!一维和二维只是我们人类自己刻意地在概念上从三维中割裂出来,事实上没有真实地存在。  ------------------------------  @自由随风-18 23:42:25  万法空相  -----------------------------
  @pwudi9222
23:50:00  宇宙是一个不明生物的细胞  —————————————————  又一个同志  
  三维到四维是数学和物理的结合,我觉得应该可以和语文结合了,三维就相当于语文中的主谓宾,四维就是在主谓宾上加了定状补中的一个,所以应该至少六维是可以被解释的
  楼主说的很有道理  但是我宁愿相信《三体》里的那种维度概念,因为它比楼主的更符合实际。
  谢谢分享 谢谢
  @叶果鲁西卡大王
16:31:15  我想到了佛的境界  ----------------------------  你居然还在!惊奇
  mark  
  4维不是3维+时间,而是3维+内与外。
  看到这么多人相信不懂数学的楼主的胡说八道我放心了不少,以后我的竞争压力小多了。  
  道家有云:古往今来謂之宇,上下十方之謂宙,时间是空间变化的度量,空间是时间存在的基础,空间不是固定的,所以时间永恒,时间不是静止的,所以空间无限。  
  至大无外指空间在理论上可以无限拓展延伸,至小无内指时间和空间都可以有一个起始的点,这就是道家说的太极。我们可以假设一条无限长的数轴,我们在数轴上任意选一点为原点,原点的左边设为十,右边定为一,这样我们就能设定任意长度为"一"个单位,十一两极就有了两个方向的度量,以此我们就能构建一个复杂的数学模型,并推导出更为复杂的算式与方法。原点就是一神教当中的那个本初的“一”。但数轴上任意一个点都能是原点,它都能构建一个复杂的数学模型,所以数轴上的每个点都是不可或缺的,这就是“无极”,佛教称之为“空”。  
  @第二海军
23:51:00  @lionhut
23:40:20   所谓多维空间都是想象和假设,事实上并不存在。连时间都不能算成为一个空间维度,因为时间和空间明显不是同一性质的东西。空间,只有三维存在!一维和二维只是我们人类自己刻意地在概念上从三维中割裂出来,事实上没有真实地存在。   -----------------------------   高维度目前只是为了计算方便而搞出来的   就像计算机里  —————————————————  存在就一定是三维,时间只是人对持续存在的感觉。  
  我认为直线无限的维度可能不存在,只是人类设定的概念。所有维都应该是闭合的,一维是一个环,二维是一个空心球面,三维是一个实心球体。三维以上可能就是与空间相关的变化、变性等非空间性。我还认为,所有物质、能量等都是多维空间伪表现形色,释放能量就是释放空间维度。
  我认为直线无限的维度可能不存在,只是人类设定的概念。所有维都应该是闭合的,一维是一个环,二维是一个空心球面,三维是一个实心球体。三维以上可能就是与空间相关的变化、变性等非空间性。我还认为,所有物质、能量等都是多维空间的表现,释放能量就是在释放空间维度。
  这样的研究,有什么实际应用吗?
  @张昕阳长沙尚格 :本土豪赏(100赏金)聊表敬意,对您的敬仰如滔滔江水连绵不绝。【】  
  楼主对线性代数还是不懂呀。  三维以上,实际上可能只是存在于数学之中,实际上根本就不存在。  或者在微观世界上,可能有一些多维的概念,如弦论。  宏观世界,目前没有发现。
  他么的第二个维度就错了。一个维度是一条线两个维度就是一个平面?一个维度是一条直线还是任意一条线?你踏马的一上来就弄不清楚。一维是个螺线的情况下二维是什么样子?
  最多只能想像到第六维,第六维就是上帝之维,四维和五维都是超脱人理解的维度,这个维度,就是某种精神意识上的超脱,不可能有肉体存在于这个维度
请遵守言论规则,不得违反国家法律法规回复(Ctrl+Enter)一. 泛型概念的提出(为什么需要泛型)?
首先,我们看下下面这段简短的代码:
1 public class GenericTest {
public static void main(String[] args) {
List list = new ArrayList();
list.add("qqyumidi");
list.add("corn");
list.add(100);
for (int i = 0; i & list.size(); i++) {
String name = (String) list.get(i); // 1
System.out.println("name:" + name);
定义了一个List类型的集合,先向其中加入了两个字符串类型的值,随后加入一个Integer类型的值。这是完全允许的,因为此时list默认的类型为Object类型。在之后的循环中,由于忘记了之前在list中也加入了Integer类型的值或其他编码原因,很容易出现类似于//1中的错误。因为编译阶段正常,而运行时会出现&java.lang.ClassCastException&异常。因此,导致此类错误编码过程中不易发现。
&在如上的编码过程中,我们发现主要存在两个问题:
1.当我们将一个对象放入集合中,集合不会记住此对象的类型,当再次从集合中取出此对象时,改对象的编译类型变成了Object类型,但其运行时类型任然为其本身类型。
2.因此,//1处取出集合元素时需要人为的强制类型转化到具体的目标类型,且很容易出现&java.lang.ClassCastException&异常。
那么有没有什么办法可以使集合能够记住集合内元素各类型,且能够达到只要编译时不出现问题,运行时就不会出现&java.lang.ClassCastException&异常呢?答案就是使用泛型。
二.什么是泛型?
泛型,即&参数化类型&。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
&看着好像有点复杂,首先我们看下上面那个例子采用泛型的写法。
1 public class GenericTest {
public static void main(String[] args) {
List list = new ArrayList();
list.add("qqyumidi");
list.add("corn");
list.add(100);
List&String& list = new ArrayList&String&();
list.add("qqyumidi");
list.add("corn");
//list.add(100);
提示编译错误
for (int i = 0; i & list.size(); i++) {
String name = list.get(i); // 2
System.out.println("name:" + name);
采用泛型写法后,在//1处想加入一个Integer类型的对象时会出现编译错误,通过List&String&,直接限定了list集合中只能含有String类型的元素,从而在//2处无须进行强制类型转换,因为此时,集合能够记住元素的类型信息,编译器已经能够确认它是String类型了。
结合上面的泛型定义,我们知道在List&String&中,String是类型实参,也就是说,相应的List接口中肯定含有类型形参。且get()方法的返回结果也直接是此形参类型(也就是对应的传入的类型实参)。下面就来看看List接口的的具体定义:
1 public interface List&E& extends Collection&E& {
int size();
boolean isEmpty();
boolean contains(Object o);
Iterator&E& iterator();
Object[] toArray();
&T& T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection&?& c);
boolean addAll(Collection&? extends E& c);
boolean addAll(int index, Collection&? extends E& c);
boolean removeAll(Collection&?& c);
boolean retainAll(Collection&?& c);
void clear();
boolean equals(Object o);
int hashCode();
E get(int index);
E set(int index, E element);
void add(int index, E element);
E remove(int index);
int indexOf(Object o);
int lastIndexOf(Object o);
ListIterator&E& listIterator();
ListIterator&E& listIterator(int index);
List&E& subList(int fromIndex, int toIndex);
我们可以看到,在List接口中采用泛型化定义之后,&E&中的E表示类型形参,可以接收具体的类型实参,并且此接口定义中,凡是出现E的地方均表示相同的接受自外部的类型实参。
自然的,ArrayList作为List接口的实现类,其定义形式是:
1 public class ArrayList&E& extends AbstractList&E&
implements List&E&, RandomAccess, Cloneable, java.io.Serializable {
public boolean add(E e) {
ensureCapacityInternal(size + 1);
// Increments modCount!!
elementData[size++] =
return true;
public E get(int index) {
rangeCheck(index);
checkForComodification();
return ArrayList.this.elementData(offset + index);
//...省略掉其他具体的定义过程
由此,我们从源代码角度明白了为什么//1处加入Integer类型对象编译错误,且//2处get()到的类型直接就是String类型了。
三.自定义泛型接口、泛型类和泛型方法
从上面的内容中,大家已经明白了泛型的具体运作过程。也知道了接口、类和方法也都可以使用泛型去定义,以及相应的使用。是的,在具体使用时,可以分为泛型接口、泛型类和泛型方法。
自定义泛型接口、泛型类和泛型方法与上述Java源码中的List、ArrayList类似。如下,我们看一个最简单的泛型类和方法定义:
1 public class GenericTest {
public static void main(String[] args) {
Box&String& name = new Box&String&("corn");
System.out.println("name:" + name.getData());
11 class Box&T& {
public Box() {
public Box(T data) {
this.data =
public T getData() {
在泛型接口、泛型类和泛型方法的定义过程中,我们常见的如T、E、K、V等形式的参数常用于表示泛型形参,由于接收来自外部使用时候传入的类型实参。那么对于不同传入的类型实参,生成的相应对象实例的类型是不是一样的呢?
1 public class GenericTest {
public static void main(String[] args) {
Box&String& name = new Box&String&("corn");
Box&Integer& age = new Box&Integer&(712);
System.out.println("name class:" + name.getClass());
// com.qqyumidi.Box
System.out.println("age class:" + age.getClass());
// com.qqyumidi.Box
System.out.println(name.getClass() == age.getClass());
由此,我们发现,在使用泛型类时,虽然传入了不同的泛型实参,但并没有真正意义上生成不同的类型,传入不同泛型实参的泛型类在内存上只有一个,即还是原来的最基本的类型(本实例中为Box),当然,在逻辑上我们可以理解成多个不同的泛型类型。
究其原因,在于Java中的泛型这一概念提出的目的,导致其只是作用于代码编译阶段,在编译过程中,对于正确检验泛型结果后,会将泛型的相关信息擦出,也就是说,成功编译过后的class文件中是不包含任何泛型信息的。泛型信息不会进入到运行时阶段。
对此总结成一句话:泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型。
四.类型通配符
接着上面的结论,我们知道,Box&Number&和Box&Integer&实际上都是Box类型,现在需要继续探讨一个问题,那么在逻辑上,类似于Box&Number&和Box&Integer&是否可以看成具有父子关系的泛型类型呢?
为了弄清这个问题,我们继续看下下面这个例子:
1 public class GenericTest {
public static void main(String[] args) {
Box&Number& name = new Box&Number&(99);
Box&Integer& age = new Box&Integer&(712);
getData(name);
//The method getData(Box&Number&) in the type GenericTest is
//not applicable for the arguments (Box&Integer&)
getData(age);
public static void getData(Box&Number& data){
System.out.println("data :" + data.getData());
我们发现,在代码//1处出现了错误提示信息:The method getData(Box&Number&) in the t ype GenericTest is&not applicable for the arguments (Box&Integer&)。显然,通过提示信息,我们知道Box&Number&在逻辑上不能视为Box&Integer&的父类。那么,原因何在呢?
1 public class GenericTest {
public static void main(String[] args) {
Box&Integer& a = new Box&Integer&(712);
Box&Number& b =
Box&Float& f = new Box&Float&(3.14f);
b.setData(f);
public static void getData(Box&Number& data) {
System.out.println("data :" + data.getData());
18 class Box&T& {
public Box() {
public Box(T data) {
setData(data);
public T getData() {
public void setData(T data) {
this.data =
这个例子中,显然//1和//2处肯定会出现错误提示的。在此我们可以使用反证法来进行说明。
假设Box&Number&在逻辑上可以视为Box&Integer&的父类,那么//1和//2处将不会有错误提示了,那么问题就出来了,通过getData()方法取出数据时到底是什么类型呢?Integer? Float? 还是Number?且由于在编程过程中的顺序不可控性,导致在必要的时候必须要进行类型判断,且进行强制类型转换。显然,这与泛型的理念矛盾,因此,在逻辑上Box&Number&不能视为Box&Integer&的父类。
好,那我们回过头来继续看&类型通配符&中的第一个例子,我们知道其具体的错误提示的深层次原因了。那么如何解决呢?总部能再定义一个新的函数吧。这和Java中的多态理念显然是违背的,因此,我们需要一个在逻辑上可以用来表示同时是Box&Integer&和Box&Number&的父类的一个引用类型,由此,类型通配符应运而生。
类型通配符一般是使用 ? 代替具体的类型实参。注意了,此处是类型实参,而不是类型形参!且Box&?&在逻辑上是Box&Integer&、Box&Number&...等所有Box&具体类型实参&的父类。由此,我们依然可以定义泛型方法,来完成此类需求。
1 public class GenericTest {
public static void main(String[] args) {
Box&String& name = new Box&String&("corn");
Box&Integer& age = new Box&Integer&(712);
Box&Number& number = new Box&Number&(314);
getData(name);
getData(age);
getData(number);
public static void getData(Box&?& data) {
System.out.println("data :" + data.getData());
有时候,我们还可能听到类型通配符上限和类型通配符下限。具体有是怎么样的呢?
在上面的例子中,如果需要定义一个功能类似于getData()的方法,但对类型实参又有进一步的限制:只能是Number类及其子类。此时,需要用到类型通配符上限。
1 public class GenericTest {
public static void main(String[] args) {
Box&String& name = new Box&String&("corn");
Box&Integer& age = new Box&Integer&(712);
Box&Number& number = new Box&Number&(314);
getData(name);
getData(age);
getData(number);
//getUpperNumberData(name); // 1
getUpperNumberData(age);
getUpperNumberData(number); // 3
public static void getData(Box&?& data) {
System.out.println("data :" + data.getData());
public static void getUpperNumberData(Box&? extends Number& data){
System.out.println("data :" + data.getData());
此时,显然,在代码//1处调用将出现错误提示,而//2 //3处调用正常。
类型通配符上限通过形如Box&? extends Number&形式定义,相对应的,类型通配符下限为Box&? super Number&形式,其含义与类型通配符上限正好相反,在此不作过多阐述了。
本文中的例子主要是为了阐述泛型中的一些思想而简单举出的,并不一定有着实际的可用性。另外,一提到泛型,相信大家用到最多的就是在集合中,其实,在实际的编程过程中,自己可以使用泛型去简化开发,且能很好的保证代码质量。并且还要注意的一点是,Java中没有所谓的泛型数组一说。
对于泛型,最主要的还是需要理解其背后的思想和目的。
&开启微信公众号之旅。
&写下自己经历的,感悟的,和随想的。
&欢迎扫码关注。
阅读(...) 评论()}

我要回帖

更多关于 五大公主pk五大王子 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信