看板 AndroidDev 關於我們 聯絡資訊
譬如從一個字串內容譬如叫做 "name" 如何將字串"name"轉成其實是一個變數名稱(string name="xxx") 感謝~ --
EmptySmile:存陣列吧...我想... 04/26 21:48
EmptySmile:然後自己建個table去對應吧~ 04/26 21:49
EmptySmile:http://goo.gl/ukiSZ Java Dictionary 04/26 21:51
hateexam:恩 由於我們無法知道一份JAVA檔 有哪些變數 04/26 21:54
hateexam:所以無法建dictionary 但用reflection辦的到嗎 04/26 21:57
nowar100:應該要自己寫一個Compiler 去把這東西Reflect出來 04/26 22:38
nowar100:例如看到有一個字串叫做"name" 它就會在另一個檔案生成 04/26 22:39
nowar100:出相對應的變數 這客製化一個小Compiler就可以做出來了 04/26 22:39
nowar100:此屬於語言問題 04/26 22:40
nowar100:如果是要在同一份Source可以直接寫出來這樣 不行 04/26 22:40
hateexam:恩 可是其實在JAVA檔已經定義一個name的變數了 04/26 22:41
nowar100:一定要對你原本的Source做一次Parse才知道到底有哪些東西 04/26 22:41
hateexam:恩 所以沒現成的android api可以用就是了><" 04/26 22:43
hateexam:看來蠻麻煩的 parse後還要建table... 04/26 22:44
nowar100:嗯我不太懂 在Java已經定義一個name的變數的意思 04/26 22:46
其實故事是這樣 某份CPP檔會去call android層 xxx.cpp--- call_anroid("name2"); 某段cpp 涵式去mapping到android code的一個涵式 [c++]void call_anroid(string) <--->[java] void Call_Android(string) xxx.java--- int name1=1 , name2=2, name3 =3; void Call_Anroid(string s) { //這裡想把s轉成某個整數變數的名稱; //可以變成func(name2); } void func(int value) { }_
nowar100:我覺得要往DesignPattern的方向想辦法 Reflection不是 04/26 22:47
nowar100:語言Coding可以作到的 那是要Compiler來做的 04/26 22:47
nowar100:或者 就真的像一樓的作法 不要把name當成變數用 04/26 22:49
nowar100:而是當成"內容" 根據這個內容再去做什麼事這樣 04/26 22:49
ericinttu:問原PO: 類似C的function pointer? 04/26 22:50
hateexam:不是 C可以用define把字串變參數名稱 但java沒define功能 04/26 23:06
hateexam:所以想有什麼方法 可以容易達到><" 04/26 23:06
nowar100:C的define也要Compile可以作到阿 你現在不是depend on 04/26 23:07
nowar100:傳進的參數嗎 這就要run time才行阿 怎麼define 04/26 23:08
nowar100:我覺得你這情況 建個Map就好啦 04/26 23:09
nowar100:name名稱字串當key 數字當value 去查詢Map就好了吧 04/26 23:10
hateexam:define可以用#define funx(value) fun(#value) 04/26 23:12
hateexam:把字串代換為變數 04/26 23:12
ericinttu:原PO是不是覺得建table麻煩了點? 至少這是條easy way啊 04/26 23:13
hateexam:問題是JAVA檔的變數我們並沒有完全知道有哪些 04/26 23:13
hateexam:可能有多個JAVA檔 其實在JAVA檔中還有在CALL其他java檔 04/26 23:15
hateexam:所以無法歸納所有JAVA變數 04/26 23:15
nowar100:那要不要改設計 04/26 23:34
nowar100:就是別人要用的話 要先來你的class註冊這個變數 這樣你 04/26 23:34
nowar100:就可以知道自己要用到哪些變數 也就可以建map了 04/26 23:34
hateexam:應該是說c++曾主動要用的 java端是被動 04/26 23:40
nowar100:我作個結論 如果要你說得可以作到動態String XXX; 04/26 23:42
nowar100:C, C++, Java 都是作不到的 04/26 23:42
hateexam:有哪些變數 再做table... 04/26 23:42
nowar100:你說得#define也只是取出傳的字串值 不能動態產生變數 04/26 23:42
ericinttu:同上 04/26 23:44
hateexam:c define能換替換成變數 比方說上的例子 在C CODE 04/26 23:44
hateexam:這行 funx("name")喚替換成fun(name) 04/26 23:45
nowar100:我說得意思是 你原文的第二行 是不能用#define做到的 04/27 00:37
nowar100:而且#define成 #value 只會讓原來的value變成字串 04/27 00:39
nowar100:不會變成一個int阿 04/27 00:39
hateexam:如果萱高int name=0 name就是一個整數變數啊~~" 04/27 00:40
hateexam: 宣告Orz 好多錯字 抱歉 04/27 00:41
※ 編輯: hateexam 來自: 124.8.150.180 (04/28 01:21)