【第 5 周討論主題:Java 基本編程語(yǔ)法】
1.寫幾行你覺得能代表你個(gè)人技術(shù)標(biāo)簽的 Java 代碼
TridentTopology topology = new TridentTopology();
Stream stream = topology.newStream("spout", spout);
EsConfig esConfig = new EsConfig("http://localhost:9300");
Fields esFields = new Fields("index", "type", "source");
EsTupleMapper tupleMapper = EsTestUtil.generateDefaultTupleMapper();
StateFactory factory = new EsStateFactory(esConfig, tupleMapper);
TridentState state = stream.partitionPersist(factory,esFields,new EsUpdater(),new Fields());
2.如何解決 if-else 多層嵌套的問(wèn)題。
首先,要梳理一下代碼業(yè)務(wù),將業(yè)務(wù)分層,把接口分為外部和內(nèi)部接口,所有空值判斷放在外部接口完成;而內(nèi)部接口傳入的變量由外部接口保證不為空,從而減少空值判斷
其次,利用多態(tài),把業(yè)務(wù)判斷消除,各子類分別關(guān)注自己的實(shí)現(xiàn),并實(shí)現(xiàn)子類的創(chuàng)建方法,避免用戶了解過(guò)多的類。
然后。可以考慮把分支狀態(tài)信息預(yù)先緩存在HashMap里,直接get獲取具體值,消除分支。
3.switch 有哪些奇葩的脾氣?
switch中是不能寫變量的,只能寫常量,但不支持boolean和long類型,支持枚舉類型和字符串類型。
要注意避免數(shù)據(jù)穿透的問(wèn)題,break一定要記得添加在case條件中
default便于后續(xù)補(bǔ)充你沒有想到的邏輯,因此如果要用switch一定要加default條件