反射

第一:反射的概念

1.(1).java程序源文件(属性和方法)编译成.class文件,(2)将.class文件加载到内存。(3).创建对象,访问属性和方法
2:反射是通过一个类的class文件访问一个类中的所有成员(属性,方法)
3:反射的实质:将一个类对应的.class文件,封装成一个类(Class类)的对象。(就是把.class文件封装成对象)通过class类的文件,可以对相应的class文件进行操作。
4.步骤:其中首先获得类的Class对象,然后通过类的对象获取另外三个方法。这四个对象就是四个类
(1).获得Class对象。首先在内存中查找对应的类的.class文件,如果没有,就把指定类型的.class文件加载到内存(这是个大对象)
 注意: 当找不到这个java文件的时候就会出现异常。注意:这是个静态方法
(2).获得Field对象。获得class文件中描述的所有属性,其中getFields()方法返回的是class文件对象的公共属性(这是个小对象,把属性也封装成类了),
(3).获取Method对象。getDeclareMethod()是获得Class对象的所有公共方法(这也是一个小对象)
(4).获取Constructors对象。getConstructors是获得所有构造方法(这是个小对象)

第二:代码实现

package emp;

public class Emp {
 private String name;
 private int age;
 private int salar;
 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;
 }
 public int getSalar() {
  return salar;
 }
 public void setSalar(int salar) {
  this.salar = salar;
 }
 public Emp() {
  super();
  // TODO Auto-generated constructor stub
 }
 public Emp(String name, int age, int salar) {
  super();
  this.name = name;
  this.age = age;
  this.salar = salar;
 }
 @Override
 public String toString() {
  return "Emp [name=" + name + ", age=" + age + ", salar=" + salar + "]";
 }

}

 

 

public class TestClass {
 public static void main(String[] args) {
  try {
   Class<Emp> cls=(Class<Emp>)Class.forName("emp.Emp");//将这个java类的.class转变成Class类的对象
     Field[] fs = cls.getDeclaredFields();
     for(Field f:fs){
      System.out.println(f);
     }
     System.out.println("------------");
     Method[] ms= cls.getDeclaredMethods();
     for(Method m:ms){
      System.out.println(m);
     }
     System.out.println("------------");
     Constructor[]cs =   cls.getConstructors();
     for(Constructor c:cs){
      System.out.println(c);
     }
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值