java_内省_注解

Javabean三大成员

事件(event),方法(),属性(property)

主要使用javabean中的属性

1.属性是getter和setter推导出来的,由get和set决定

2.属性与字段没有关系,getName==>name

类型:getName,isMan(boolean类型)

Lombok(代码生成工具)

使用方法:加lib包–>Add as Libary

@AllArgsConstructor(所有有参构造器),@NoArgsConstructor(无参构造器),@setting…

内省(introspector)

作用:专门操作javaBean中的多个属性,可以直接轻松进行操作

反射:需要获取方法并遍历后,使用方法去操作属性

内部核心类:Introspector

内省常使用的API

1.使用字节码对象 获取当前类对象

BeanInfo bf=Introspector.getBeanInfo(User.class,Objiect.class);

2.获取javaBean的属性描述器(数组多个)

PropertyDescriptors[] pds=bf.getPropertyDescriptors()

3.获取属性的相关信息

User u=new User();
for(PropertyDescriptor pd:dps){
pd.getName()//获得转换后的名字
    //获取属性类型
    pd.getPropertyType
    //获取getter方法
    pd.getReadMethod
    //获取里面的Setter方法
Method write=pd.getWriteMethod()
if("name".equals(pd.getName)){
write.invoke(u,"李少")
}
}
javaBean与Map集合之间的转化

可以转化的原因:javaBean和Map在数据结构上相似

注意事项:Map转JavaBean的时候注意使用泛型以满足用户使用的类型

public static <T>  T map2javabean(Map<String, Object>map,Class<T> clz )

for (PropertyDescriptor pd : pds) {
    //获取属性名,作为map的key
    String key = pd.getName();
    //获取map的key的值
    Object value = map.get(key);
    //调用属性对应的setter方法,封装数据
    Method writeMethod = pd.getWriteMethod();
    writeMethod.invoke(bean, value);
}
注解(Annotation)

作用:描述程序元素(类,方法,形参等等)

三元素:1.注解本身,2.被贴的程序元素,3.第三方程序赋予的功能

注解的创建方法:

创建类为Annotation:public interface 类名{}

元注解:描述注解的注解,能贴在哪里

@target:注释可以贴在哪里,@target({ElementType.TYPE,ElementType.FIELD}}

TYPE(类),FIELD(字段),METHOD(方法),PARAMETER(参数),CONSTRUCTOR(构造器),PACKAGE(包)

@Retention:注释可以保存到什么时间,@Retention(RetentionPolicy.RUNTIME)

SOURCE(编译时期),CLASS(创建了类时),RUNTIME(运行时间)

注解语法
//创建注解
//元注解
//当前注解保存到运行时期
@Retention(RetentionPolicy.RUNTIME)//该注解保存到什么时候
//当前注解能贴在类,接口,字段上
@Target({ElementType.TYPE,ElementType.FIELD})//该注解贴在哪里
public @interface MyAnnotation {
    //传的参数,有默认值可传可不传
    String name() default"xxxx";
    int age() default 10;
    String value() default "";
}

    //这里的单个数据直接传递给value属性
    //只给value属性传值,可以省略属性名
@MyAnnotation("")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值