Tuesday, September 4, 2012

Invoking parent private method by reflection


public class SuperClass {
boolean superField = true;
private void superMethod(boolean superField) {
System.out.println("superMethod() called - param:" + superField);
}
}






import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class SubClass extends SuperClass {
public static void main(String args[]) {
SubClass subClassInstance = new SubClass();
try {
Method declaredMethod = SuperClass.class.getDeclaredMethod("superMethod", boolean.class);
declaredMethod.setAccessible(true);
declaredMethod.invoke((SuperClass)subClassInstance, new Object[] {false}); //I remember that there was a situation this explicit cast is required
} catch (NoSuchMethodException e) {
} catch (SecurityException e) {
} catch (IllegalAccessException e) {
} catch (IllegalArgumentException e) {
} catch (InvocationTargetException e) {
}
}
}



Friday, March 30, 2012

MapQuest Android MapView vs Google Android MapView

Problem: Cannot align the MapView properly in MapQuest.


Solution: Do your own bit-wise OR!!!


Google Android MapView LayoutParams:


int a = MapView.LayoutParams.BOTTOM_CENTER; //81

int b = MapView.LayoutParams.BOTTOM; //80

int c = MapView.LayoutParams.CENTER_HORIZONTAL; //1

int d = MapView.LayoutParams.BOTTOM | MapView.LayoutParams.CENTER_HORIZONTAL; // 81

it makes sense, doesn't it?



How about MapQuest Android MapView LayoutParams?

int a = MapView.LayoutParams.BOTTOM_CENTER; //35

int b = MapView.LayoutParams.BOTTOM; //32

int c = MapView.LayoutParams.CENTER_HORIZONTAL; //1

int d = MapView.LayoutParams.BOTTOM | MapView.LayoutParams.CENTER_HORIZONTAL; // 33

hmmm...something doesn't seem right here...