privateaccesstest.java
来自「《透视Java》的源码」· Java 代码 · 共 44 行
JAVA
44 行
package covertjava.visibility;import java.awt.*;import java.lang.reflect.Method;import covertjava.chat.MainFrame;/** * <p>Gives public access to private class members</p> * <p>Copyright: Copyright (c) 2004 Sams Publishing</p> * @author Alex Kalinovsky * @version 1.0 */public class PrivateAccessTest { public static void main(String[] args) throws Exception { System.out.println("Testing private access"); 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); } else System.out.println("Container does not use BorderLayout"); } 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; } public static Container createTestContainer() throws Exception { MainFrame frame = new MainFrame(false); return frame.getContentPane(); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?