Java反射学习笔记

Java反射

1.方法

//根据类名返回类的对象

Class<?> classBook = Class.forName("com.android.peter.reflectdemo.Book");

//创建实例

Object objectBook = classBook.newInstance();

//转换

Book book = (Book) objectBook;

......

Class<?> classBook = Class.forName("com.android.peter.reflectdemo.Book");

//反射私有的构造方法

Constructor<?> declaredConstructorBook = classBook.getDeclaredConstructor(String.class,String.class);

//取消权限控制检查

declaredConstructorBook.setAccessible(true);

//创建实例

Object objectBook = declaredConstructorBook.newInstance("Android开发艺术探索","任玉刚");

//转换

Book book = (Book) objectBook;

......

Class<?> classBook = Class.forName("com.android.peter.reflectdemo.Book");
Object objectBook = classBook.newInstance();

//反射私有属性

Field fieldTag = classBook.getDeclaredField("TAG");

//取消权限控制检查

fieldTag.setAccessible(true);

//获取该实例的私有属性

String tag = (String) fieldTag.get(objectBook);

......

Class<?> cServiceManager = Class.forName("android.os.ServiceManager");

//反射方法

Method mGetService = cServiceManager.getMethod("getService", String.class);
Object oNotificationManagerService = mGetService.invoke(null, Context.NOTIFICATION_SERVICE);
Class<?> cINotificationManagerStub = Class.forName("android.app.INotificationManager$Stub");
Method mAsInterface = cINotificationManagerStub.getMethod("asInterface",IBinder.class);
Object oINotificationManager = mAsInterface.invoke(null,oNotificationManagerService);
Method mGetZenMode = cINotificationManagerStub.getMethod("getZenMode");
zenMode = (int) mGetZenMode.invoke(oINotificationManager);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容