繼上一篇 "如果諸葛亮用C#寫出師表..."后,站長想自己的第一語言是Java,雖然平時工作上用的不多,也用Java實現一遍吧,改改就是了,無非就是:
C#的Console.WriteLine改為Java的System.out.println;
C#的string改為Java的String;
C#的bool改為Java的boolean;
C#的繼承符號:改為Java的extends;
C#的斷言Debug.Assert改為Java的assert。
不到半個小時,Java版出師表就新鮮出爐了,和上篇聲明一樣,純粹無聊寫著玩,讀者別在意枚舉、類名、變量中文命名,純粹為了娛樂。
出師表背景再來一次
今天讓我們碼農以特有的方式,來表達對丞相大人的敬仰與懷念!
蜀章武元年(221年),劉備稱帝,諸葛亮為丞相。蜀漢建興元年(223年),劉備病死,將劉禪托付給諸葛亮。諸葛亮實行了一系列比較正確的政治和經濟措施,使蜀漢境內呈現興旺景象。為了實現全國統一,諸葛亮在平息南方叛亂之后,于建興五年(227年)決定北上伐魏,擬奪取魏的長安,臨行之前上書后主,即這篇《出師表》。
Java 源碼
定義的一些類、枚舉
public enum 王道 {明, 昏}/* * 先帝,陛下,文景,桓靈 */static class 君 { public String 名稱; public boolean 在; public 王道 為君; public 君() { 在 = true; 為君 = 王道.明; } public boolean 創業(double percentage) { if (percentage < 0.5) { 在 = false; System.out.println("創業未半而中道崩殂!"); return false; } else { System.out.println("興復漢室,還于舊都!"); return true; } } public void 開張圣聽() { System.out.println("開張圣聽,光先帝遺德!"); } public void 恢弘志士之氣() { } public void 賓自菲薄() { } public void 引喻失義() { System.out.println("塞忠諫之路!"); } public void 親賢臣遠小人() { 為君 = 王道.明; } public void 親小人遠賢臣() { 為君 = 王道.昏; } public void 治國() { } public void 偏私() { System.out.println("內外異法!"); } public boolean 咨之(String 事) { if (王道.明 == 為君) { return true; } return false; } public boolean 施行(String 事) { return true; } public void 曰(String 言) { System.out.println(言); } public void 每與臣論此事() { System.out.println("嘆息痛恨于桓靈。"); }}static enum 臣德 {賢, 奸}static class 侍衛之臣 { private 君 劉備 = new 君(); private 君 劉禪 = new 君(); public String 名稱; public 臣德 為臣; public void 不懈于內() { System.out.println("侍衛之臣" + 名稱 + "不懈于內"); } public boolean 追先帝之殊遇() { if (劉備.為君 == 王道.明) { return true; } else { return false; } } public boolean 報之于陛下() { if (劉禪.為君 == 王道.明) { return true; } else { return false; } } public boolean 謀事(String 事) { if (為臣 == 臣德.賢) { return true; } return false; }}static class 忠志之士 { private 君 劉備 = new 君(); private 君 劉禪 = new 君(); public String 名稱; public 臣德 為臣 = 臣德.賢; public void 忘身于外() { System.out.println("忠志之士" + 名稱 + "忘身于外!"); } public boolean 追先帝之殊遇() { if (劉備.為君 == 王道.明) { return true; } else { return false; } } public boolean 報之于陛下() { if (劉禪.為君 == 王道.明) { return true; } else { return false; } } public boolean 謀事(String 事) { if (為臣 == 臣德.賢) { return true; } return false; }}public static enum 氣候 {興盛, 疲弊, 興隆, 傾頹}/* * 曹魏,東吳,益州,先漢,后漢 */public static class 國 { public 氣候 國運; public 國() { 國運 = 氣候.興盛; } public void 付諸有司論其刑賞(侍衛之臣 臣) { if (臣.為臣 == 臣德.賢) { System.out.println("賞!"); } else { System.out.println("刑!"); } }}/* * 郭攸之,費祎 */public static class 侍中 extends 侍衛之臣 {};/* * 董允 */public static class 侍郎 extends 侍衛之臣 {}/* * 陳震 */public static class 尚書 extends 侍衛之臣 {}/* * 張裔 */public static class 長史 extends 侍衛之臣 {}/* * 蔣琬 */public static class 參季 extends 侍衛之臣 {}/* * 向寵 */static class 中都督 extends 忠志之士 {}/* * 諸葛亮 */static class 丞相 extends 侍衛之臣 { public void 回首往事() { System.out.println("臣本布衣,躬耕于南陽,茍全性命于亂世,不求聞達于諸候。先帝不以臣卑鄙,猥自枉屈,三顧臣于草廬之中,咨臣以當世之事,由是感激,遂許先帝以驅馳。后值巔覆,受任于敗軍之際,奉命于危難之間,爾來二十有一年矣。"); } public void 表忠心() { System.out.println("先帝知臣謹慎,故臨崩寄臣以大事也。受命以來,夙夜憂嘆,恐托付不效,以傷先帝之明。故五月渡瀘,深入不毛。"); } public void 請戰() { System.out.println("今南方已定,兵甲已足,當獎率三軍,北定中原,庶竭駑鈍,攘除奸兇,興復漢室, 還于舊都。"); } public void 道別() { System.out.println("今當遠離, 臨表涕零, 不知所言。"); }}復制代碼
Java的main方法
public static void main(String[] args) { 君 先帝 = new 君(); 先帝.名稱 = "先帝"; 先帝.創業(0.49); 國 益州 = new 國(); 益州.國運 = 氣候.疲弊; System.out.println("此誠危急存亡之秋也!"); 侍中 郭攸之 = new 侍中(); 郭攸之.名稱 = "郭攸之"; if (郭攸之.追先帝之殊遇() && 郭攸之.報之于陛下()) { 郭攸之.不懈于內(); } 侍中 費祎 = new 侍中(); 費祎.名稱 = "費祎"; if (費祎.追先帝之殊遇() && 費祎.報之于陛下()) { 費祎.不懈于內(); } 侍郎 董允 = new 侍郎(); 董允.名稱 = "董允"; if (董允.追先帝之殊遇() && 董允.報之于陛下()) { 董允.不懈于內(); } 中都督 向寵 = new 中都督(); 向寵.名稱 = "向寵"; if (向寵.追先帝之殊遇() && 向寵.報之于陛下()) { 向寵.忘身于外(); } 君 陛下 = new 君(); if (陛下.為君 == 王道.明) { 陛下.開張圣聽(); 陛下.恢弘志士之氣(); } else { 陛下.賓自菲薄(); 陛下.引喻失義(); } 陛下.治國(); boolean 宮中 = false; boolean 府中 = false; boolean 陟臧 = false; boolean 罰否 = false; assert (宮中 == 府中); assert (陟臧 == 罰否); 侍衛之臣 作奸犯科者 = new 侍衛之臣(); 作奸犯科者.為臣 = 臣德.奸; 侍衛之臣 為忠善者 = new 侍衛之臣(); 為忠善者.為臣 = 臣德.賢; if (陛下.為君 == 王道.明) { 益州.付諸有司論其刑賞(作奸犯科者); 益州.付諸有司論其刑賞(為忠善者); } else { 陛下.偏私(); } if (郭攸之.為臣 == 臣德.賢 && 費祎.為臣 == 臣德.賢 && 董允.為臣 == 臣德.賢) { System.out.println("此皆良實,志慮忠純,是以先帝簡拔以遺陛下。"); } String 宮中之事 = null; if (陛下.咨之(宮中之事) && 郭攸之.謀事(宮中之事) && 費祎.謀事(宮中之事) && 董允.謀事(宮中之事)) { 陛下.施行(宮中之事); System.out.println("裨補闕病, 有所廣益"); } if (向寵.為臣 == 臣德.賢) { System.out.println("性行淑均,曉暢軍事。"); System.out.print("先帝稱之曰:"); 先帝.曰("能"); System.out.println("是以眾議舉寵為督。"); } String 營中之事 = null; if (陛下.咨之(營中之事)) { 陛下.施行(宮中之事); System.out.println("行陣和睦,優劣得所!"); } 君 文景 = new 君(); 君 恒靈 = new 君(); 國 先漢 = new 國(); 國 后漢 = new 國(); 文景.親賢臣遠小人(); 先漢.國運 = 氣候.興隆; 恒靈.親小人遠賢臣(); 后漢.國運 = 氣候.傾頹; do { 先帝.每與臣論此事(); } while (先帝.在); if (郭攸之.為臣 == 臣德.賢 && 費祎.為臣 == 臣德.賢 && 董允.為臣 == 臣德.賢) { System.out.println("此悉貞良死節之臣,愿陛下親之信之,則漢室之隆,可計日而待也。"); } 丞相 諸葛亮 = new 丞相(); 諸葛亮.回首往事(); 諸葛亮.表忠心(); 諸葛亮.請戰(); // 此臣所以報先帝而忠陛下之職分也 諸葛亮.道別();}復制代碼代碼輸出《出師表》
出師表部分輸出
創業未半而中道崩殂!此誠危急存亡之秋也!侍衛之臣郭攸之不懈于內侍衛之臣費祎不懈于內侍衛之臣董允不懈于內忠志之士向寵忘身于外!開張圣聽,光先帝遺德!刑!賞!性行淑均,曉暢軍事。先帝稱之曰:能是以眾議舉寵為督。行陣和睦,優劣得所!嘆息痛恨于桓靈。臣本布衣,躬耕于南陽,茍全性命于亂世,不求聞達于諸候。先帝不以臣卑鄙,猥自枉屈,三顧臣于草廬之中,咨臣以當世之事,由是感激,遂許先帝以驅馳。后值巔覆,受任于敗軍之際,奉命于危難之間,爾來二十有一年矣。先帝知臣謹慎,故臨崩寄臣以大事也。受命以來,夙夜憂嘆,恐托付不效,以傷先帝之明。故五月渡瀘,深入不毛。今南方已定,兵甲已足,當獎率三軍,北定中原,庶竭駑鈍,攘除奸兇,興復漢室, 還于舊都。今當遠離, 臨表涕零, 不知所言。復制代碼
作者:沙漠盡頭的狼(dotnet9.com)
鏈接:https://juejin.cn/post/6941193127617265672