使用放射方式去实现一个接口
场景:
假设想使用 MediaScannerConnection 类的 scanFile 静态方法,但需传入参数OnScanCompletedListener
使用如下反射方式便可.
Class<?> MediaScanner = null;
Class<?> OnScanCompletedListener = null;
try {
MediaScanner = Class.forName("android.media.MediaScannerConnection");
OnScanCompletedListener = Class.forName("android.media.MediaScannerConnection$OnScanCompletedListener");
Method scanFileMethod = MediaScanner.getDeclaredMethod("scanFile", Context.class, String[].class,
String[].class, OnScanCompletedListener);
Object listener = Proxy.newProxyInstance(OnScanCompletedListener.getClassLoader(),
new Class[] { OnScanCompletedListener }, new OnScanCompletedListenerImpl());
scanFileMethod.invoke(null, new Object[] {mContext, paths, mimeTypes,