默认计划
(0人评价)
JAVA反射机制【极限IT JAVA班第10课】

掌握JAVA反射机制

价格 ¥ 199.00
该课程属于 【极限IT】JAVA工程师训练营 领券低至2980元
请加入后再学习

利用反射实例化对象:

要想实例化类对象,最直观做法是使用关键字new。但是从优秀的软件设计框架来讲,new是不应该使用的,因为所有的开发不能够与具体的类型耦合在一起。

 

传统对象的实例化操作

Dept dept = new Dept();

 

使用反射完成对象的实例化

Class<?> cls = Class.forName("cn.mldn.vo.Dept");

Object obj = cls.newInstance();

 

两种对象的实例化操作的区别

在面向对象的设计过程中一定要避免耦合操作

 

在整个开发过程中,如果自己定义了一个接口,要想取得该接口的对象,首先要考虑使用工厂设计模式。

Fruit apple = new Apple(); //是不可取的

 

正确方法是定义一个工厂类

class Fatory{
    public staic Fruit getInstance(String className){
        if("Apple".equals(className)){
            return new Apple();
        }else if("pear".equals(className)){
            return new Pear();
        }else{
            return null;
        }
    }
}

//获取Apple的实例化对象
public class TestDemo {
    public static void main(String[] args){
        Fruit f = factory.getInstance("Apple");
        f.eat();
    }
}

以上方法只是一个简单工厂类,如果增加了子类,工厂类也需要发生改变。代码量大时,可能顾不上工厂类的编写。

class Factory {
    public static Fruit getInstance(String className){
        Fruit f = null;
        try{
            f = (Fruit)Class.forName(className).newInstance();
        }catch(Exception e){
            e.printStackTrace();
        }
        return f;
    }
}

以上工厂设计模式最大的好处在于

即使程序开发的时候类不存在,也不出现语法错误

工厂类可以在扩充子类的时候保持统一风格不做改变

缺点在于实例化对象时只能调用无参构造

[展开全文]

反射与工厂  

 

public T newInstance() throws exception

反射实例化:

class<?> cls=class.forName("cn.mldn.vo.Dept")

Object obj=cls.newInstance();

sysout(obj);

 

[展开全文]

授课教师

讲师

课程特色

视频(26)
图文(1)
文档(7)

学员动态

Drop 加入学习
妥了 加入学习
xiepeng 加入学习
charmyCode 加入学习
luojianglai 加入学习