反射,想拿什么拿什么

来源:互联网 发布:私立学校收费软件 编辑:程序博客网 时间:2024/04/28 08:13
反射机制,电脑里没有拿不到的东西?
public class GetPrivateAttribution {    public static void main(String args[]){        Test t = new Test();        Class temp = t.getClass();        Field f;        try {            f = temp.getDeclaredField("key");            f.setAccessible(true);              System.out.println(f.get(t));        } catch (Exception e) {            e.printStackTrace();        }    }}class Test{    private String key=null;    public Test(){        key = "1223";    }}

在开源中国中ViewNewsHeader中就利用反射将ViewPager的默认Scroller给替换掉了,以便更改其翻页时间

public class SmoothScroller extends Scroller {    private int mDuration = 1200; //    public SmoothScroller(Context context) {        super(context);    }    public SmoothScroller(Context context, Interpolator interpolator) {        super(context, interpolator);    }    @Override    public void startScroll(int startX, int startY, int dx, int dy, int duration) {        super.startScroll(startX, startY, dx, dy, mDuration);    }    @Override    public void startScroll(int startX, int startY, int dx, int dy) {        super.startScroll(startX, startY, dx, dy, mDuration);    }    public void bingViewPager(ViewPager viewPager) {        try {            Field mScroller = null;            mScroller = ViewPager.class.getDeclaredField("mScroller");            mScroller.setAccessible(true);            mScroller.set(viewPager, this);        } catch (NoSuchFieldException e) {            e.printStackTrace();        } catch (IllegalArgumentException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        }    }}


0 0