我試圖通過(guò)構(gòu)造函數(shù)傳遞某些類(lèi)型的字符(例如標(biāo)題中的字符),然后為其分配一個(gè)枚舉。我有一個(gè)具有三個(gè)值的枚舉類(lèi):NUMBER、STRING 和 SYMBOL。我有三個(gè)構(gòu)造函數(shù):(float x) {}(String str){}(Symbol value) {}當(dāng)傳遞浮點(diǎn)數(shù)時(shí),我將變量“type”分配給 Type.STRING。對(duì)于字符串也是如此,但是對(duì)于 Type.STRING。如何對(duì)各種符號(hào)(例如標(biāo)題中的符號(hào))執(zhí)行此操作?當(dāng)我創(chuàng)建 Entry 實(shí)例并嘗試傳遞加號(hào)字符 (+) 時(shí),我收到消息“標(biāo)記“+”上存在語(yǔ)法錯(cuò)誤,請(qǐng)刪除此標(biāo)記”。public class Entry{ private Type type; public Entry(Type value) { this.type = Type.SYMBOL; }}
1 回答

蕪湖不蕪
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
在java中+
是一個(gè)運(yùn)算符。它只能用作表達(dá)式的一部分,不能單獨(dú)使用。
+
但是,您可以傳遞包含如下內(nèi)容的字符串:"+"
或使用代表不同運(yùn)算符的枚舉:
enum?Operator?{ ????PLUS,?MINUS; }
然后你的構(gòu)造函數(shù)可以接受這樣的枚舉:
public?Entry(Operator?op)?{ }
另一種選擇是創(chuàng)建一個(gè)“加法”函數(shù),可以將兩個(gè)元素加在一起,并將該函數(shù)傳遞給構(gòu)造函數(shù)。然而,這有點(diǎn)棘手,需要知道你要添加什么類(lèi)型的東西:
BiFunction<MyObject,?MyObject,?MyObject>?addition?=??(a,b)?->?{ ????//implement?a+b?here; ????//return?result; ????}
那么構(gòu)造函數(shù)可能是這樣的:
public?Entry(BiFunction<MyObject,?MyObject,?MyObject>?func)?{ }
添加回答
舉報(bào)
0/150
提交
取消