string转object对象_025:听闻你精通面向对象,来解决一下
對象(含樹),面向?qū)ο笈c函數(shù)式,是當(dāng)今主流語言的共同特征
# 025:聽聞你精通面向?qū)ο?#xff0c;來解決一下
#Quiz #Oop #Generic
計(jì)算機(jī)語言的進(jìn)化之路走到2020年,面向?qū)ο笈c函數(shù)式乃是主流,每個(gè)語言模式的背后都是一套哲學(xué)與世界觀。面向?qū)ο蠛秃瘮?shù)式中最具力量的特性是泛型Generic,因其具有嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)上的類型推導(dǎo),從而使編寫代碼變得智能,健壯,使類型設(shè)計(jì)變得有趣而燒腦。
@史榮久 / 2020-11-18 / CC-BY-SA-3.0??
## 1.經(jīng)典問題
已知,蘋果是水果的子類。? 那么,裝水果的水果袋與裝蘋果的蘋果袋,
?蘋果袋是水果袋的子類么?
?水果袋能否裝蘋果么?
?要求用水果袋的地方,用蘋果袋行么?
?能用java泛型表示上述問題么?
## 2.綜合場景
有一個(gè)解析控制臺輸入?yún)?shù)的方法,按`空白`(`0x20`和`0x09`)分割命令行參數(shù),支持`String`和`Number`(Long,Integer,Double,Float)兩種類型。當(dāng)使用單雙引號(`'`和`"`)括起來時(shí),其內(nèi)的字符串僅作為`String`處理,也不考慮其內(nèi)`空白`。
示意代碼如下。其意圖是,希望通過傳入?yún)?shù)的類型限定解析行為和輸出類型。若傳入`String`時(shí),各參數(shù)都當(dāng)做`String`處理,以`List`返回。若傳入Object時(shí),能自動(dòng)解析`Number`和`String`類型參數(shù),以`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++) { // 分析`空白`分割的字符串,`引號`括起來的空白除外。 // 強(qiáng)制指定,引號括起來的字符串 typedAdd(args, buff, String.class); // 自動(dòng)識別,解析成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) { // 自動(dòng)處理類型,并決定是否存入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為參數(shù),無法限定值, // 可以使用Number.class, int[].class // 無法控制程序行為和輸出}■ 希望行為,優(yōu)雅的利用面向?qū)ο蠛头盒椭R
?限定參數(shù)`type`的輸入值,類似enum類特性,僅可輸入2個(gè)固定值,`Obj`和`Str`
?當(dāng)輸入`Str`時(shí),返回`List`,當(dāng)`Obj`時(shí),返回`List`
?typedAdd方法支持泛型,不需要類型強(qiáng)轉(zhuǎn)和SuppressWarnings
■ 核心思想,限制的藝術(shù),把運(yùn)行時(shí)錯(cuò)誤消滅在編譯時(shí)。
?限定參數(shù)值,達(dá)到enum那種效果。
?通過參數(shù)值,限定return類型。
■ 動(dòng)手提示,
?改造參數(shù)`Class type`,當(dāng)前無法約束參數(shù)值。
?改造 typedAdd方法,目前無法完成真實(shí)功能。
--
※ 我們的征途是星辰大海 ※
總結(jié)
以上是生活随笔為你收集整理的string转object对象_025:听闻你精通面向对象,来解决一下的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mips汇编计算开方_清华考研辅导班-2
- 下一篇: npm install是什么命令_了解n