天天看点

反射与 NEW | 学习笔记

开发者学堂课程【Java 面试疑难点串讲1:面试技巧及语言基础:反射与 NEW】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:

https://developer.aliyun.com/learning/course/24/detail/506

反射与 NEW

内容介绍 

一.反射与 new 的关系.

一.反射与new的关系.

对于反射机制而言,本质上的目的:避免具体的对象操作,而 new 处理是需要有明确的,而 new 处理是需要有明确的偶合性。

范例:以接口实例化为例.

package cn.mldn.demo; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; interface IMessage ( public void print() ; class MLDNMessage implements IMessage { public void print() { System.out.println("Www.mldn.cn"); public class MessagesDemo { public static void main(String[] args) throws Exception 

Message msg = new MLDÑMessage();//

程序要与具体的子类耦合msg. print();

注:如果说现在一个程序类的代码要进行了耦合处理的话,

那么这个时候就必须清楚的认识到一个问题:

该程序子类使用之中就无法动态更换了,IMessage 只能够使用一个固定的子类。

而如果要使用反射处理的话,那么这个时候就不再受到一个固定类的限制。

package cn.mldn.demo; interface IMessage { public void print(); class MLDNMessage implements IMessage fpublic void print() { System.out.println("Www.mldn. cn"); public class MessagesDemo public static void main(String[] args) throws Exception {

//

字符串意味着可以随意更改,你现在设置了一个新的子类,那么新的子类可以任意更换名称 Class<?> cls = Class.forName("cn. mldn. demo[, MLDNMessage") ;object obj = cls.newInstance();//直接实例化对象new MLDNMessage();

cls.getMethod("print").invoke(obj) ;//

直接反射调用方法

 注:反射并不是一个容易被初学者理解的话题,因为如果要想清楚反射的作用,那么必须要求你至少已经学习完了 java.

 业务分析设计这门课程,这门课程理解了:

不使用反射处埋;

使用反射处理