Unlike methods, a constructor cannot be abstract, static, final, native  or synchronized.

          1. A constructor is not inherited, so there is no need to declare it final

          2. As the same reason above, an abstract constructor could never be implemented.

          3. A constructor is always invoked with respect to an object, so it makes no sense for a constructor to be static.

          4. There is no practical need for a constructor to be synchronized, because it would lock the object under construction, which is normally not made available to other threads until all constructors for the object have completed their work.

          5. The lack of native constructors is an arbitrary language design choice that makes it easy for an implementation of the Java virtual machine to verify that superclass constructors are always properly invoked during object creation.

          翻譯如下:

          不同于方法,構(gòu)造器不能是abstract, static, final, native, strictfp, 或者synchronized的.

          1.構(gòu)造器不是通過(guò)繼承得到的,所以沒(méi)有必要把它聲明為final的。

          2.同理,一個(gè)抽象的構(gòu)造器將永遠(yuǎn)不會(huì)被實(shí)現(xiàn)。(所以也不能聲明為abstract的)

          3.構(gòu)造器總是關(guān)聯(lián)一個(gè)對(duì)象而被調(diào)用,所以把它聲明為static是沒(méi)有意義的。

          4.沒(méi)有實(shí)際的需要把構(gòu)造器定義成同步的,因?yàn)樗鼘?huì)在構(gòu)造的時(shí)候鎖住該對(duì)象,直到所有的構(gòu)造器完成它們的工作,這個(gè)構(gòu)造的過(guò)程對(duì)其它線(xiàn)程來(lái)說(shuō),通常是不可訪(fǎng)問(wèn)的。

          5.沒(méi)有本地的構(gòu)造器是任意一種語(yǔ)言的設(shè)計(jì)選擇,這樣會(huì)使得在創(chuàng)建對(duì)象的過(guò)程中JVM實(shí)現(xiàn)很容易去校驗(yàn)父類(lèi)的構(gòu)造器是否總是被正確地調(diào)用了。

          (本地化的方法情況特別復(fù)雜,所以JVM調(diào)用起來(lái)非常麻煩,需要考慮很多種情況,沒(méi)有native關(guān)鍵字的情況下,JVM實(shí)現(xiàn)起來(lái)比較容易。)

          PS:受俺導(dǎo)師的影響,第一次有這種沖動(dòng)想去翻譯一些英文資料。雖然翻譯得很爛,但很欣慰。

          歡迎來(lái)訪(fǎng)!^.^!
          本BLOG僅用于個(gè)人學(xué)習(xí)交流!
          目的在于記錄個(gè)人成長(zhǎng).
          所有文字均屬于個(gè)人理解.
          如有錯(cuò)誤,望多多指教!不勝感激!

          Feedback

          # re: 為什么構(gòu)造器不能是abstract, static, final, native or synchronized的?  回復(fù)  更多評(píng)論   

          2007-04-10 22:46 by 糖果
          學(xué)習(xí)中~~加油咯^-^

          # re: 為什么構(gòu)造器不能是abstract, static, final, native or synchronized的?  回復(fù)  更多評(píng)論   

          2007-04-20 09:27 by 馬嘉楠
          strictfp 雖然也不能用來(lái)修飾constructor(構(gòu)造函數(shù)),不過(guò)原文當(dāng)中并沒(méi)有提到,原文說(shuō)的是native ,呵呵,可能是你的筆誤吧。


          --我也常有翻譯的沖動(dòng),^+^
          不使用native constructor(本地構(gòu)造函數(shù))是任何一種程序語(yǔ)言的設(shè)計(jì)選擇,因?yàn)檫@樣在對(duì)象創(chuàng)建過(guò)程中,校驗(yàn)父類(lèi)的構(gòu)造器是否總是被正確地調(diào)用,對(duì)于JVM的實(shí)現(xiàn)將會(huì)非常容易。



          PS:前一段忙就沒(méi)怎么來(lái)這里,你在吉林上學(xué)?還是家在吉林阿

          # re: 為什么構(gòu)造器不能是abstract, static, final, native or synchronized的?  回復(fù)  更多評(píng)論   

          2007-04-20 09:39 by 久城
          其實(shí)那段英文是在Matrix上看到的別人的一個(gè)回復(fù)。據(jù)說(shuō)是某本書(shū)上的。strictfp還是第一次聽(tīng)說(shuō),還不大了解。

          其實(shí)最后一句話(huà)我翻譯了好久,請(qǐng)教了身邊很多人。甚至到CSDN上發(fā)帖子問(wèn)哈哈。到最后也沒(méi)確定下來(lái)。

          # re: 為什么構(gòu)造器不能是abstract, static, final, native or synchronized的?  回復(fù)  更多評(píng)論   

          2007-04-20 09:50 by 馬嘉楠
          strictfp 是用來(lái)精確浮點(diǎn)運(yùn)算的

          strictfp可以修飾一個(gè)類(lèi)、接口以及方法,但是不能對(duì)接口中的方法以及構(gòu)造函數(shù)聲明為strictfp的。

          如果聲明為strictfp,則在所聲明的范圍內(nèi)都將依照浮點(diǎn)規(guī)范IEEE-754來(lái)執(zhí)行,不會(huì)因?yàn)椴煌挠布脚_(tái)等出現(xiàn)差異。

          更具體的你可以搜索以下

          上面一段英文是Java Language Specification Second Edition 中
          8.8.3節(jié) Constructor Modifiers 中的一段話(huà)

          # re: 為什么構(gòu)造器不能是abstract, static, final, native or synchronized的?  回復(fù)  更多評(píng)論   

          2007-04-20 09:52 by 久城
          收益!

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          Copyright © 久城

          主站蜘蛛池模板: 肃北| 苗栗市| 迭部县| 通辽市| 宜兴市| 塔城市| 调兵山市| 元江| 池州市| 芦溪县| 兴业县| 红原县| 稻城县| 霍州市| 分宜县| 揭西县| 慈溪市| 永州市| 宣城市| 民勤县| 湖南省| 蒙阴县| 会昌县| 安吉县| 宁武县| 雷波县| 丽水市| 永宁县| 鹤山市| 离岛区| 青神县| 汾西县| 连平县| 且末县| 乌兰浩特市| 和田县| 津南区| 舟山市| 金华市| 龙井市| 江源县|