黑马程序员----JavaBean、内省 和 注释

---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------

一、JavaBean

       JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。

       如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对象(Value Object,简称VO)。这些信息在类中用私有字段来存储,如果读取或设置这些字段的值,则需要通过一些相应的方法来访问。   

       JavaBean的属性是根据其中的setter和getter方法来确定的,而不是根据其中的成员变量。

使用JavaBean的优点:

1、JavaEE工程开发,需要使用。

2、JDK中提供了对JavaBean进行操作的一些API,这套API就称为内省。用内省这套api操作JavaBean比用普通类的方式更方便。

二、内省

用于对javaBean进行操作,javaBean特殊的java类

1、用内省方式对javaBean的属性进行set, get 操作

Person p = new Person("zhangsan",23);
PropertyDescriptor pd = new PropertyDescriptor("name",p.getClass());
Method methodGetName = p.getReadMethod();
Object retVal = methodGetName.invoke(p);

Method methodSetName = p.getWriteMethod();
Object retVal = methodGetName.invoke(p,"zhang");


2、使用BeanUtils工具包操作javaBean 

    需要导入BeanUtils包以及第三方jar包(log包)

    好处:(1)类型自动转换,使用String

                (2)支持属性的级联 Data data = new Data();

                       data.time作为属性来用

                (3)BeanUtils可以操作map

                        sop(BeanUtils.setProperty(p,"age"),"23");//参数为String

                        sop(BeanUtils.getProperty(p,"age"));

    PropertyUtils不进行类型转换

三、注释(Annotation)

        注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记。

        常用的三个:@Override  @Deprecated  @SuppressWarnings

注意:

        1、也叫元数据。相当于一种标识

        2、作用分类

        (1)编写文档:通过代码里标示的元数据生成文档(生成doc文档)

        (2)代码分析:通过元数据对代码进行分析(使用反射)

        (3)编译检查:通过标示的元数据让编译器实现基本的编译检查(Override)

        3、使用位置

           包 类 成员变量 方法 局部变量

        4、注解相当于一种特殊的类

    @Override:
          @Override就是用来指定方法覆盖的,它可以强制一个子类必须要覆盖父类的方法。如下程序使用@Override指定子类Apple的info方法必须重写父类方法。
    @Deprecated:
         @Deprecated用于表示某个程序元素已过时,当其他程序使用已过时的类、方法时,编译器将会给出警告。
如:
class A {
	//定义old方法已过时
	@Deprecated
	public void old(){
		System.out.println("过时方法...");
	}
}
public class Test{
	public static void main(String[] args){		
		//下面使用old方法将会被编译器警告
		new A().old();
	}
}
     @SuppressWarnings
          @SuppressWarnings指示被Annotation标识的程序元素取消显示指定的编译器警告。
例如,程序中使用没有泛型限定的集合将会引起编译器警告,为了避免这种编译器警告,可以用@SuppressWarnings取消编译器警告。
//关闭整个类里的编译器警告
@SuppressWarnings("unchecked")
public class Demo{
	public static void main(String[] args){
		List list = new ArrayList();
	}
}

注解的属性:
@Retention(RetentionPolicy.RUNTIME)//元注解 ,三个阶段
@Interface A{
	String color() default "red";
	Strng value();//value()属性很特殊
	int[] arr() default {1,2,2};

}
@A(color="red",value="set",arr={1,2,3})//设置,如果只有value属性需要设置时,可以把=号省略@A("setValue")
class C{
	if(C.class.isAnnotationPresent(A.class)){
		A ann = (A)C.class.getAnnotation(A.class);  
		sop(ann.color());//使用
		sop(ann.value());//使用
		sop()
	}
}


---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com

你可能感兴趣的:(黑马程序员)