您的位置:首页 > 编程语言 > Java开发

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

2016-05-30 13:19 676 查看
/**

 * 定义一个枚举,枚举多用来存放常量,是一种数据类型

 * @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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息