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

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