日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

string转object对象_025:听闻你精通面向对象,来解决一下

發布時間:2025/3/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 string转object对象_025:听闻你精通面向对象,来解决一下 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對象(含樹),面向對象與函數式,是當今主流語言的共同特征

# 025:聽聞你精通面向對象,來解決一下

#Quiz #Oop #Generic

計算機語言的進化之路走到2020年,面向對象與函數式乃是主流,每個語言模式的背后都是一套哲學與世界觀。面向對象和函數式中最具力量的特性是泛型Generic,因其具有嚴謹的數學上的類型推導,從而使編寫代碼變得智能,健壯,使類型設計變得有趣而燒腦。

@史榮久 / 2020-11-18 / CC-BY-SA-3.0??

## 1.經典問題

已知,蘋果是水果的子類。? 那么,裝水果的水果袋與裝蘋果的蘋果袋,

  • ?蘋果袋是水果袋的子類么?

  • ?水果袋能否裝蘋果么?

  • ?要求用水果袋的地方,用蘋果袋行么?

  • ?能用java泛型表示上述問題么?

## 2.綜合場景

有一個解析控制臺輸入參數的方法,按`空白`(`0x20`和`0x09`)分割命令行參數,支持`String`和`Number`(Long,Integer,Double,Float)兩種類型。當使用單雙引號(`'`和`"`)括起來時,其內的字符串僅作為`String`處理,也不考慮其內`空白`。

示意代碼如下。其意圖是,希望通過傳入參數的類型限定解析行為和輸出類型。若傳入`String`時,各參數都當做`String`處理,以`List`返回。若傳入Object時,能自動解析`Number`和`String`類型參數,以`List`返回。

@NotNullpublic static List parseArgs(CharSequence line, Classtype) { if (line == null || line.length() == 0) return Collections.emptyList(); List args = new ArrayList<>(); StringBuilder buff = new StringBuilder(); for (int i = 0, len = line.length(); i < len; i++) { // 分析`空白`分割的字符串,`引號`括起來的空白除外。 // 強制指定,引號括起來的字符串 typedAdd(args, buff, String.class); // 自動識別,解析成Number或String typedAdd(args, buff, Object.class); } if (buff.length() > 0) { typedAdd(args, buff, Object.class); } return args;}private static void typedAdd(List> list, StringBuilder buff, Class> type) { // 自動處理類型,并決定是否存入list中 buff.setLength(0);}@Testpublic void testParseArgs() { List<String> strs = parseArgs("123 456", String.class); Assert.assertEquals(Arrays.asList("123", "456"), strs); List<Object> objs = parseArgs("123 '456'", Object.class); Assert.assertEquals(Arrays.asList(123, "456"), objs); // 如果以CLass為參數,無法限定值, // 可以使用Number.class, int[].class // 無法控制程序行為和輸出}

■ 希望行為,優雅的利用面向對象和泛型知識

  • ?限定參數`type`的輸入值,類似enum類特性,僅可輸入2個固定值,`Obj`和`Str`

  • ?當輸入`Str`時,返回`List`,當`Obj`時,返回`List`

  • ?typedAdd方法支持泛型,不需要類型強轉和SuppressWarnings

■ 核心思想,限制的藝術,把運行時錯誤消滅在編譯時。

  • ?限定參數值,達到enum那種效果。

  • ?通過參數值,限定return類型。

■ 動手提示,

  • ?改造參數`Class type`,當前無法約束參數值。

  • ?改造 typedAdd方法,目前無法完成真實功能。

--

※ 我們的征途是星辰大海 ※

總結

以上是生活随笔為你收集整理的string转object对象_025:听闻你精通面向对象,来解决一下的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。