Make your own free website on Tripod.com
public class PrivateAccessTest { public static void main(String[] args) throws Exception { Container container = createTestContainer(); if (container.getLayout() instanceof BorderLayout) { BorderLayout layout = (BorderLayout)container.getLayout(); Component center = getChild(layout, BorderLayout.CENTER); System.out.println("Center component = " + center); } ... } public static Component getChild(BorderLayout layout, String key) throws Exception { Class[] paramTypes = new Class[]{String.class, boolean.class}; Method method = layout.getClass().getDeclaredMethod("getChild", paramTypes); // Private methods are not accessible by default method.setAccessible(true); Object[] params = new Object[] {key, new Boolean(true)}; Object result = method.invoke(layout, params); return (Component)result; } ... } C:\Projects\CovertJava\distrib\bin>private_access_test.bat Testing private access Center component = javax.swing.JSplitPane[,0,0,0x0,...] java.security.AccessControlException: access denied (java.lang.RuntimePermission accessDeclaredMembers) grant { permission java.lang.RuntimePermission "accessDeclaredMembers"; permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; }; set CLASSPATH=..\lib\chat.jar set JAVA_ARGS=%JAVA_ARGS% -Djava.security.manager set JAVA_ARGS=%JAVA_ARGS% -Djava.security.policy=../conf/java.policy java %JAVA_ARGS% covertjava.visibility.PrivateAccessTest