反射
文章平均质量分 64
weixin_46722612
这个作者很懒,什么都没留下…
展开
-
反射——动态代理
我们来比较Java的class和interface的区别:可以实例化 class(非abstract);不能实例化 interface。所有interface类型的变量总是通过向上转型并指向某个实例的:CharSequence cs = new StringBuilder();有没有可能不编写实现类,直接在运行期创建某个interface的实例呢?这是可能的,因为Java标准库提供了一种动态代理(Dynamic Proxy)的机制:可以在运行期动态创建某个interface的实例。什么叫原创 2021-03-08 17:03:29 · 30 阅读 · 0 评论 -
反射——获取继承关系
当我们获取到某个Class对象时,实际上就获取到了一个类的类型:Class cls = String.class; // 获取到String的Class还可以用实例的getClass()方法获取:String s = "";Class cls = s.getClass(); // s是String,因此获取到String的Class最后一种获取Class的方法是通过Class.forName(""),传入Class的完整类名获取:Class s = Class.forName("java.l原创 2021-03-08 16:49:54 · 614 阅读 · 0 评论 -
反射——调用构造方法
我们通常使用new操作符创建新的实例:Person p = new Person();如果通过反射来创建新的实例,可以调用Class提供的newInstance()方法:Person p = Person.class.newInstance();调用Class.newInstance()的局限是,它只能调用该类的public无参数构造方法。如果构造方法带有参数,或者不是public,就无法直接通过Class.newInstance()来调用。为了调用任意的构造方法,Java的反射API提供了C原创 2021-03-08 15:12:52 · 367 阅读 · 0 评论 -
反射——调用方法
我们已经能通过Class实例获取所有Field对象,同样的,可以通过Class实例获取所有Method信息。Class类提供了以下几个方法来获取Method:Method getMethod(name, Class…):获取某个public的Method(包括父类)Method getDeclaredMethod(name, Class…):获取当前类的某个Method(不包括父类)Method[] getMethods():获取所有public的Method(包括父类)Method[] getD原创 2021-03-07 11:04:54 · 2731 阅读 · 0 评论 -
发射——访问字段
对任意的一个Object实例,只要我们获取了它的Class,就可以获取它的一切信息。我们先看看如何通过Class实例获取字段信息。Class类提供了以下几个方法来获取字段:Field getField(name):根据字段名获取某个public的field(包括父类)Field getDeclaredField(name):根据字段名获取当前类的某个field(不包括父类)Field[] getFields():获取所有public的field(包括父类)Field[] getDeclaredF原创 2021-03-07 10:05:28 · 56 阅读 · 0 评论 -
JAVA笔记——反射
反射是为了解决在运行期,对某个实例一无所知的情况下,如何调用其方法。原创 2021-03-06 21:25:47 · 53 阅读 · 0 评论