Since you implement this function in recursive way you will validate it on each call. So it's generally bad practice.

Consider using loop:
current = obj
for(each: mark.split(.){
    if(each.isEmpty()) thr IAE  //could it be null?
    try find getter "get" + each
    try find field each
    thr IAE
}