Code A works well, I think Code B can work correctly, but in fact, Code B doesn't work correctly. Why?
Why can't I create an object in the function-  private void SetField(Context mContext,MAtt aField,String name) ?
Code A
public class MURLPar {
    public MAtt diskcount=new  MAtt();
    public MAtt diskindex=new  MAtt();
    public MURLPar(Context mContext){
        SetField(mContext,diskcount,"Pardiskcount");
        SetField(mContext,diskindex,"Pardiskindex");
    }
    public class MAtt {
        public String name;
        public String value;
    }
    private void SetField(Context mContext,MAtt aField,String name){
        int id = mContext.getResources().getIdentifier(name, "string", mContext.getPackageName());
        aField.name=mContext.getString(id);
    }
}
Code B
public class MURLPar {
    public MAtt diskcount; 
    public MAtt diskindex;
    public MURLPar(Context mContext){
        SetField(mContext,diskcount,"Pardiskcount");
        SetField(mContext,diskindex,"Pardiskindex");
    }
    public class MAtt {
        public String name;
        public String value;
    }
    private void SetField(Context mContext,MAtt aField,String name){
        aField=new MAtt(); //Create object
        int id = mContext.getResources().getIdentifier(name, "string", mContext.getPackageName());
        aField.name=mContext.getString(id);
    }
}
 
     
     
     
    