开发者学堂课程【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.
业务分析设计这门课程,这门课程理解了:
不使用反射处埋;
使用反射处理