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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

對象(含樹),面向?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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。