j2ee的基础反射

什么是反射? 

        反射java语言中的一种机制,通过这种机制可以动态的实例化对象、读写属性、调用方法

        反射就是把java类中的各种成分映射成一个个的Java对象

        有一个概念  所有类      类类 java.lang.Class     类对象 特定类
 

反射的使用(使用Student类演示)

        获取Class对象的三种方式       一切反射相关的代码都从获得类对象开始

                1.Class.forName(完整类名,带包名)

public static void main(String[] args) throws Exception  {
    //反射方式的获取类对象  
    Class forName = Class.forName("Com.Student");
    //通过类对象来实例化该类
    Student stu=(Student)forName.newInstance();
}

                2.类名.class

public static void main(String[] args) throws Exception {
    //反射方式获取类对象
    Student stu=Student.class.newInstance();
}

                3.对象.getClass()

public static void main3(String[] args) throws Exception {
    //创建Student对象  传统
    Student stu=new Student();
    //反射方式获取类对象
    stu.getClass().newInstance();
}

一般都使用Class.forName(),一个字符串可以传入也可写在配置文件中等多种方法。
  注1:ClassNotFoundException(类名错|少jar包)
  注2:同一类的、类对象只会创建一个

         通过反射获取对象的构造方法

        Student类的构造方法
        

//获得对象
            Class<Student> c =(Class<Student>) Class.forName("Com.Student"); 

          1.调用公开的构造方法       Constructor.getConstructor
             
        2. 调用非公开的构造方法       Constructor.getDeclaredConstructor

需要授权   setAccessible(true)

没有授权  报错;java.lang.IllegalAccessException


        

 通过反射获取对应对象的属性

        1.获取公开的属性   public  
                getFiled("");

         

         2.获取非公开的属性   private
                getDeclaredFiled(); 

         

 通过反射获取动态的调用方法   

        getMethod("方法名","方法参数")

     //实例化
    Student stu = c.newInstance();
    //设置sname
    stu.setSname("dd");
    //调用公开动态方法
    Method method = c.getMethod("hello", String.class);
    //运行method方法
    method.invoke(stu, "hello");

 通过反射获取访问修饰符

        getModifiers();  获取访问修饰符

     //实例化
    Student stu = c.newInstance();
    //先获取属性值
    Field dc = c.getDeclaredField("address");
    //获取该属性的修饰符
    int n = dc.getModifiers();
    System.out.println(n);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值