枚举,注解,实体类,单元测试,反射对象字段------------举例使用

来源:互联网 发布:软件自动化测试 编辑:程序博客网 时间:2024/06/05 19:37
/**
 * 定义一个枚举,枚举多用来存放常量,是一种数据类型
 * @author Administrator
 *
 */
public enum Myenum {
RED,BLUE,YELLOW

}

===========================================================================================================

/**
 * 自定义一个注解,一个采用枚举类型赋值,另一个声明为String,默认值为“”
 * @author Administrator
 *
 */
@Documented
@Target(value={ElementType.FIELD})//表明该注解针对的类型是字段
@Retention(RetentionPolicy.RUNTIME)//表明该注解实在运行时有效
@Inherited
public @interface Myannotation {
public String value() default "";
    public Myenum myenum() default Myenum.BLUE;//给注释类型中的变量myenum赋默认值为枚举数据类型的Myenum.BLUE


}

===========================================================================================================

/**
 * 建立实体类,含两个属性,一个用枚举数据类型
 * 给注释类型中的变量myenum赋值为枚举数据类型的Myenum.YELLOW
 * 给注释类型中的变量value赋值为xx
 * @author Administrator
 *
 */
public class People {

//@Myenum("xx")
@Myannotation(myenum=Myenum.YELLOW,value="xx")
private String colorName;

public String getColorName() {
return colorName;
}
public void setColorName(String colorName) {
this.colorName = colorName;
}


public int getAge() {
return age;
}


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


public int age;


}

===========================================================================================================

/**
 * 建立单元测试类
 * @author Administrator
 *
 */
public class PeopleTest {
@Test
public void test1(){
System.out.println("111111111");//检测单元测试方法是否成功
}
@Test
public void testpeople(){
Class p=People.class;//利用反射生成对象  Class p1=Class.forName("com.yunhe.entity.People");
try {
Field[] fs=p.getDeclaredFields();//利用反射生成对象p的属性字段的集合
for(Field f:fs){
System.out.println("字段类型:      "+f.getType());//用于检查反射生成的对象的字段的类型
System.out.println("字段名称:      "+f.getName());//用于检查反射生成的对象的字段的名字
if(f.isAnnotationPresent(Myannotation.class)){//判断字段是否采用指定类型的注解,利用反射产生注解对象
Myannotation at = f.getAnnotation(Myannotation.class);//返回对象f所包含的指定的注解对象,否则null
System.out.println("注解的字段值:      "+at.myenum()+"----"+at.value());//输出特定注解的相关字段的值
}

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



}

====================================运行结果=======================================================================

字段类型:      class java.lang.String
字段名称:      colorName
注解的字段值:      YELLOW----xx
字段类型:      int
字段名称:      age


0 0
原创粉丝点击