2 回答

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
你為什么要那樣做?你正在混合參數(shù)值和源代碼。所以你問(wèn)的是不可能的。Java 預(yù)編譯代碼,但如果您所做的工作可行,則需要運(yùn)行時(shí)編譯。
Expression 構(gòu)造函數(shù)Expression(java.lang.String expressionString, PrimitiveElement... elements)
接受可變數(shù)量的元素。您甚至可以傳遞一組 PrimitiveElement 實(shí)例:
Argument[] arguments=new Argument[3]; arguments[0]==new Argument("x",2); arguments[1]=new Argument("y",3); arguments[2]=new Argument("z",4);Expression e = new Expression(formula,arguments);
看起來(lái)足夠靈活?;蛘吣隳芙忉屢幌聻槭裁催@對(duì)你的情況不是一個(gè)有用的解決方案。
重新審理您的最后一個(gè)案例時(shí):
HashMap<String, Argument> map4 = function_2(list); String formula="(A+A)*100"; Expression e = new Expression(formula,map4.values().toArray(new Argument[0])); System.out.println("result= " + e.calculate());
Argument... 只接受一系列 Argument 實(shí)例或 Argument 類型的數(shù)組。map4.values().toArray(new Argument[0])
將值參數(shù)列表轉(zhuǎn)換為數(shù)組。該參數(shù)new Argument[0]
只是返回正確類型的數(shù)組所必需的。

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
我在我編寫的函數(shù)中返回動(dòng)態(tài)值作為結(jié)果。(例如,A、B 和 C(所有參數(shù)類型))
我必須根據(jù)函數(shù)的結(jié)果自動(dòng)創(chuàng)建一個(gè)表達(dá)式。
例如; 比如3個(gè)值返回(A,B,C)應(yīng)該是這樣;
Expression e2 = new Expression ("(A * B) * (C-100)", A, B, C);
如果2個(gè)值返回(A, B, C)應(yīng)該是這樣;
Expression e2 = new Expression ("(A * B) / 10", A, B);
如果 1 返回 (A) 應(yīng)該是這樣的;
Expression e2 = new Expression ("(A * 15)", A);
也就是說(shuō),我必須根據(jù)下一個(gè)數(shù)字自動(dòng)編寫這些表達(dá)式。
那我就用calculate()函數(shù)來(lái)計(jì)算。
添加回答
舉報(bào)