接上
jar包 BeanUtils导入
还需要导入logging包导入之后可以使用工具包中的BeanUtils.getProperty(rp1,
"x")方法来获得属性值,BeanUtils.setProperty(rp1, "x",
"10");这里的返回值和传入的参数都是String类型的。方法内不会自动转换。支持属性链,可以一级级的往下面来读取和设置数据
可以来进行set和get属性内的属性当不是一个基本的类型,其内部会有getXxx方法,就可以知道里面有Xxx属性,可以使用set和get来设置和获得属性值
还有一个PropertyUtils中的get和setProperty方法去设置和获得属性,这里得到的和需要传入的参数就是原来属性的数据类型
注解 重要
告诉编译器以及其它调用该程序的程序要做什么不要做什么
一个注解就是一个类,写上一个注解等于创建了一个类的实例对象
注释类型摘要 | |
---|---|
Deprecated |
用 @Deprecated 注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。 |
Override |
表示一个方法声明打算重写超类中的另一个方法声明。 |
SuppressWarnings |
指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。 |
元注解1
由于在源文件向class文件编译和class文件被类加载器加载到内存中的时候会有可能清除注解。所以需要使用注解@Retention
的RetentionPolicy.SOURCE,RetentionPolicy.CLASS,RetentionPolicy.RUNTIME来防止注解被清除
元注解2
@Target
({ElementType.xxx})来决定注解加到哪个上面,其中TYPE表示各种类型包括class,interface,enum等
为注解添加属性
在注解里面写方法抽象的
String color();
只需要为其赋值,像是为属性赋值一样
@Zhanghao(color = "red")
使用时,就像使用方法一样
System.out.println(Zhanghao.color());
只有一个value属性需要设置时就可以不使用属性名来为其赋值当然如果其中还有其他属性需要赋值,那么需要在注解设置属性的地方为其他属性设置缺省置
为注解添加高级属性
添加数组属性
添加枚举类型属性
还有是class类型还有各种基本数据类型以及其数组
泛型
泛型是新特性,是提供给编译器使用的。
在以前的集合中,能够放入各种类型的数据,在取出其中的数据时,需要进行类型转换,而且有可能出错。所以使用泛型,在类名的后面加上<数据类型>,表示只能存入哪些类型的数据。若果添加其它类型的编译就会出错。而在编译之后会进行“去类型化”,使得其字节码指向同一份。使用反射可以穿过这样的泛型。向指定泛型为Integer的数组中addString的数据。
在JDK文档中,类名之后有<>的都可以使用泛型
<>读作typeof
ArrayList<E> E 类型参数 整个读作类型泛型
ArrayList<Integer> Intrger
实际类型参数
ArrayList叫做原始类型
参数化类型与原始类型的兼容是好的,所以前面的是参数化的类型去定义一个原始类型是没有错的,向以前兼容
反之也可以
参数化类型不考虑继承,<>中的不能不相同
编译与运行阶段的不同 编译是一行行翻译代码