Android使用的JAVA宏(是否存在?)

Android使用的JAVA宏(是否存在?),java,android,arrays,json,foxpro,Java,Android,Arrays,Json,Foxpro,我已经使用VFP8.0很长一段时间了,我最喜欢的是它的宏功能 name = "Paul James" age = 25 result = My name is &name, I am &age years old. 我也可以, dimension x[5]; x[0] = "box" x[1] = "area" text.&x[0]..text = "textbox" ---> textbox.text="textbox" text.&x[1]..text

我已经使用VFP8.0很长一段时间了,我最喜欢的是它的宏功能

name = "Paul James"
age = 25
result = My name is &name, I am &age years old.
我也可以,

dimension x[5];
x[0] = "box"
x[1] = "area"
text.&x[0]..text = "textbox" ---> textbox.text="textbox"
text.&x[1]..text = "textarea" ---> textarea.text="textarea"
这就是FoxPro的事情,我似乎已经对它产生了兴趣,并且有点倾向于希望这样的东西存在于像Java这样的OOs语言中(或者它真的存在,我只是错过了一些额外的研究?),无论如何,我想有这样的东西,这是我的问题

我有一个JSON数组,我获取响应的所有名称,并使用android代码工厂中提供的“names()”方法将其存储在临时数组中

有意地,我想为从该方法创建的临时数组中的每个名称创建一个数组

举例说明

JSONArray response = 
[{"name":"a","middlename":"aa","surname":"aaa"},{"name":"b","middlename":"bb","surname":"bbb"},{"name":"c","middlename":"cc","surname":"ccc"}]

temp[] = [{name,middlename,surname}];
期望输出:

String[] name = new String[response.firstobject.length];
String[] middlename = new String[response.firstobject.length];
String[] surname =  new String[response.firstobject.length];
这是我的实际代码;JSON解析器

    @SuppressWarnings("null")
public ArrayList<String> parseJson(JSONArray ja) throws JSONException{
    ArrayList<String> listItems = new ArrayList<String>();
    String[] temp = null;       
    //Get all the fields first
    for (int i=0; i<=0; ++i){
        JSONObject jo = ja.getJSONObject(i);
        if(jo.length()>0){
            temp = new String[jo.names().length()];
            for(int x=0; x<jo.names().length(); ++x){
                temp[x] = jo.names().getString(x);
            }
        }
    }
     }
@SuppressWarnings(“空”)
公共ArrayList parseJson(JSONArray ja)抛出JSONException{
ArrayList listItems=新的ArrayList();
字符串[]temp=null;
//首先获取所有字段
对于(int i=0;i0){
temp=新字符串[jo.names().length()];

对于(int x=0;x我不一定要尝试复制您在Visual FoxPro中可以做的事情,因为在该语言中避免宏替换通常是一个好主意,除非您必须使用它,而且您不能使用名称表达式

以下是名称表达式的示例:

STORE 'city' TO cVarCity
REPLACE (cVarCity) WITH 'Paris'
这要快得多,尤其是在循环中


在Java方面,您可能正在使用API。

我也使用vfp,我有一些例程。也许这些函数为您提供STRTRAN、CHRTRAN:

//--------- ejemplos :
// STRTRAN("Hola * mundo","*", "//") ==> "Hola // mundo"
public String STRTRAN(String cExpression, String cFindString, String cReplacement){        
    return cExpression.replace(cFindString, cReplacement);
}

//------------------ ejemplos:
// miToolkit.CHRTRAN("ABCDEF", "ACE", "XYZ"); // muestra XBYDZF. ok
// miToolkit.CHRTRAN("ABCDEF", "ACE", "XYZQRST");  // muestra XBYDZF. ok
// miToolkit.CHRTRAN("ABCD", "ABC", "YZ"); // muestra YZCD.  No es como fox
public String CHRTRAN(String cString, String cFindChars, String cNewChars){
    String cResult = cString;       
    char[] aFindChars; 
    char[] aNewChars;  
    int nLength = cFindChars.length();

    aFindChars = cFindChars.toCharArray();
    aNewChars  = cNewChars.toCharArray();
    if(cNewChars.length() < nLength){
        nLength = cNewChars.length() ;
    }
    for(int i=0; i < nLength; i++){
        cResult = cResult.replace( aFindChars[i], aNewChars[i] );
    }
    return cResult;
}
/------------eEmplos:
//STRTRAN(“Hola*mundo”,“*”,“/”==>“Hola//mundo”
公共字符串STRTRAN(字符串cExpression、字符串cFindString、字符串cReplacement){
返回cExpression.replace(cFindString,cReplacement);
}
//------------------Ejempos:
//miToolkit.CHRTRAN(“ABCDEF”、“ACE”、“XYZ”);//muestra XBYDZF.ok
//miToolkit.CHRTRAN(“ABCDEF”、“ACE”、“XYZQRST”);//muestra XBYDZF.ok
//miToolkit.CHRTRAN(“ABCD”、“ABC”、“YZ”);//muestra YZCD.No es como-fox
公共字符串CHRTRAN(字符串cString、字符串cFindChars、字符串cNewChars){
字符串cResult=cString;
char[]aFindChars;
char[]aNewChars;
int nLength=cFindChars.length();
aFindChars=cFindChars.toCharArray();
aNewChars=cNewChars.toCharArray();
如果(cNewChars.length()
萨卢多斯, 塞萨尔·戈梅斯,
Lima Perú

“您不能使用名称替换”,听起来很困惑,请纠正我的理解,我不能或者我可以使用名称替换?但是,名称表达式并没有实现我的目标,我目前正在深入研究您所指出的反射,但是,对于我目前对java+android的了解,这似乎是进步,我失去了希望,可能最终会变成w用懒惰的东西“硬编码”,不幸的是,这会破坏任何OO概念的可重用性和灵活性。我还可以补充一点,我可能会偏离正确的做事方式,我可能会采取一把双刃斧,其目的是在可读性和性能之间,或者非标准和标准的做事方式之间。。。