jdbc之反射基础

一、各个包代表意思:
1、Dao层:主要是连接数据库的,BaseDao是数据库的基类
2、实现Dao层:也是连接数据库的,里面有个接口Dao,接口起到强制性的约束
3、entity层:一一对应数据库的字段
4、utils层:工具包

二、工厂者模式:
1、多态两种体现形式:1、作为返回值类型;2、作为方法的形参。

三、抽象工厂者模式:
1、之所以有这个是因为上面的方式可扩展性太差
2、步骤:
1、新建一个abstractFactory类,里面有一个方法:abstract Pet abstractFactory();
2、给每样宠物类定义另外一个继承了抽象工厂类的工厂类,返回自己对应的对象。
3、在测试类里抽象接口指向子类对象,然后抽象类对象.abstractFactory().play();,输出即可

四、反射:
1、就是在你的.java文件转换成.class文件后,对.class文件做手脚。
2、反射最常用的一种体现就是把热更新变成热修复,所有框架都用到反射。
3、特点:所有对象在我面前都是裸体。
4、所以我必须掌握.java文件如何转换成.class文件,然后反射是如何找到.class文件呢?
5、获得.class文件的三种方法:
1、对象.getClass();
2、通过反射得到:
1、类名.class;(开发中少用)
2、Class.forName(“包名.类名”);
6、获取构造方法:
1、得到所有构造方法(包括公有、私有),返回的是一个数组:
类变量.getDeclaredConstructors();
2、得到所有公有的构造方法:
类变量.getConstrustors();
3、得到一个公有的构造方法,并且使其被调用:
1、类变量.getConstrustor();
2、得到一个对象,利用构造方法的变量.newInstance()
3、输出这个对象即可。
4、得到一个私有的构造方法,并使其被调用:
1、类变量.getDeclaredConstructor(int.class);//这里如果调用有参方法就放对应参数即可
2、暴力反射,利用构造方法的变量.setAccessible(true);
3、得到一个对象,利用构造方法的变量.newInstance(12);//参数里放对应的具体值
4、输出这个对象即可。

7、获取属性:
    1、得到所有属性:
        类变量.getDeclaredFeilds();
    2、得到所有公有属性:
        类变量.getFeilds();
    3、得到单个公有的属性:
        1、类变量.getFeild("name");//参数放属性的名字
        2、属性对象.set(对象,"");//第一个是你用反射得到的obj对象,第二个是你要赋的值
        3、直接输出对象

8、获取方法:
    1、得到所有方法:
        类变量.getDeclaredMethods();
    2、得到所有公有的方法:
        类变量.getMethods();
    3、得到单个公有的、无参的方法,并调用:
        1、类变量.geMethod("方法名");
        2、得到对象,通过类变量.getConstrustor().newInstance();
        3、用方法变量.invoke(对象);
    4、调用单个私有的、有参的方法,并调用:
        1、类变量.getMethod("方法名",参数类型.class);
        2、去掉权限  方法变量.setAccessible(true);       
        2、得到对象,类变量.getConstrustor().newInstance();
        3、类变量.invoke(对象,"传入参数的值");

9、利用反射调用主方法:
    1、得到Class类变量:
            Class.froName("包名+类名");

    2、得到Method对象:       
            类变量.geMethod("main","String[].class");

    3、获得一个obj对象:
            类变量.getConstrustor().newInstance();

    4、Method对象.invoke(obj对象,"");???????????????????????????????????????????????/找代码看看

10、利用反射忽略泛型的定义:
    1、确定泛型是String类型
    2、得到list的.class文件:
                            list.getClass();
    3、得到Method对象:
                        类变量.geMethod("add",Object.class);

    4、接着就可以添加int类型的值了。
    5、关键点:
        1、必须使用forEach循环输出,而且类型该为Object。

11、利用反射得到指定动物的play方式
    1、首先定义Dog、Cat类,都继承Pet这个父类,重写play方法
    2、定义一个工厂类:返回一个对象,而返回那个对象依赖传入的value值
        1、public Object getObject(String value){

            //得到.class文件
            Class cl12=Class.forName(value);
            //得到一个对象
            Object obj=cl12.getConstrustor().newInstance();
            return obj;             
        }
    3、在utils包里新建一个ConfigManager类,方法跟以前那个一模一样,就是获取属性文件里的值getValue(String key);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值