反射机制与注解(一)

反射机制

反射: 主要是指程序可以访问、检测和修改它本身状态或行为的一种能力

  1. java 反射特点
  • Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而不是源代码中选定的类协作的代码。这使反射成为构建灵活的应用的主要工具。但需注意的是:如果使用不当,反射的成本很高
  • 允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性
  1. reflection的工作机制
    反射包
package annotion;

public class reflection {
   public static void main(String[] args) throws ClassNotFoundException {
   //反射加载类,获取
     Class c1 = Class.forName("annotion.user1");// 包名
     Class c2 = Class.forName("annotion.user1");
     Class c3 = Class.forName("annotion.user1");
     Class c4 = Class.forName("annotion.user1");
       System.out.println(c1);
       //  验证是否为同一个类
       // 一个类在内存中只有一个CLASS对象
       // 被加载后,类的整个结构都会封装在class 中
       System.out.println(c2.hashCode());
       System.out.println(c3.hashCode());
       System.out.println(c4.hashCode());
       c1.getClass();
   }
}
// 实体类: projo ,entity
class user1{
   int age;
   int id;
   String name;

   public user1() {
   }
//  get/set 方法
   public user1(int age, int id, String name) {
       this.age = age;
       this.id = id;
       this.name = name;
   }

   public int getAge() { return age;}

   public void setAge(int age) { this.age = age; }

   public int getId() { return id; }

   public void setId(int id) { this.id = id; }

   public String getNaem() { return name;  }

   public void setNaem(String naem) {  this.name = name;  }
// 输出字符串
   @Override
   public String toString() {
       return "reflection{" +
               "age=" + age +
               ", id=" + id +
               ", naem='" + name + '\'' +
               '}';
   }
}

注解方法

package annotion;

import java.lang.annotation.*;

// 测试元注解
public class test01 {
    @MyAnnotation
    public  void  ta(){

    }
}
 @Retention 表示我们注解在什么地方还有效
// runtime 》 class > sources

@Retention(value = RetentionPolicy.CLASS.RUNTIME)
//定义一个注解

 @Target 表示我们注解可以用在那些地方
@interface MyAnnotation{
}
@Inherited  表示子类可以继承父类的注释
@Documented 表示是否将我们的注释生成在Java的文档中
@Documented
@Target(value = {ElementType.METHOD,ElementType.TYPE}

package annotion;

import javax.annotation.processing.SupportedOptions;

public class rest01 extends Object{

    @Override  //重写
    public String toString(){
        return super.toString();
    }

    @Deprecated  // 不推荐使用的方法
    public void toUs(){
        toUs();
    }
   {
        System.out.println("jingffao");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值