您的位置:首页 > 其它

反射与注解

2015-08-09 12:01 316 查看

目录

反射

注解

反射

java反射:可以获取正在运行的Java对象,调用该对象的属性、方法、构造器。

实现反射的类:

Class类:它表示正在运行的Java应用程序中的类和接口

Field类:提供有关类或接口的属性信息,以及对它的动态访问权限

Constructor:提供关于类的单个构造器的信息以及对它的访问权限

Method:提供关于类或接口中某个方法信息

反射的使用:

[code]package com.collection;

public class Stu {
    private String name ;
    private int age;
    public Stu(){

    }
    public Stu(String name,int age){
        this.name=name;
        this.age=age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
//  public void setAge(int age) {
//      this.age = age;
//  }
//  

}


[code]package com.collection;

import java.lang.reflect.Field;

public class Test {
    public static void main(String[] args) {
    Stu zhangsan=new Stu();
    Class<Stu> stu= Stu.class;//获得Stu类的对象,从而可以调用该类的属性、方法、构造器
    try {
        Field field=stu.getDeclaredField("age");//获得stu类的age属性
        field.setAccessible(true);//设置不访问属性的访问修饰符
        field.set(stu, 18);
        field.setAccessible(false);

    } catch (NoSuchFieldException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
    }

}


注意:

导包:

import java.lang.reflect.Constructor;

  import java.lang.reflect.Field;  

  import java.lang.reflect.Method;

注解

注解:Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: