`
在水伊方
  • 浏览: 107073 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

黑马程序员-java高新技术06

阅读更多

----------------------android培训java培训、java学习型技术博客、期待与您交流!----------------------

 

 

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

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

JavaBean的属性是根据其中的settergetter方法来确定的,而不是根据其中的成员变量。如果方法名为setId,中文意思即为设置id,至于把它存到哪个变量上,我们不用关心,如果方法名为getId,中文意思即为获取id,同样我们也不用关系它是从哪个变量上取得的。去掉set前缀,剩余部分就是属性名,如果剩余部分的第二个字母是小写的,则把剩余部分的首字母改成小的。

setId()的属性名àid

isLast()的属性名àlast

setCPU的属性名是什么?àCPU

getUPS的属性名是什么?àUPS

一个类被当作javaBean使用时,JavaBean的属性是根据方法名推断出来的,它根本看不到java类内部的成员变量。 

JDK中提供了对JavaBean进行操作的一些API,这套API就称为内省(IntroSpector)

 

 下面通过一个简单的程序演示如何用内省来操作JavaBean

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

public class IntroSpectorDemo {
	public static void main(String[] args) throws Exception {
		Student s = new Student();
		PropertyDescriptor pd = new PropertyDescriptor("name", Student.class);
		//得到属性的写方法,为属性赋值
		Method writeMethod = pd.getWriteMethod();
		writeMethod.invoke(s, "zhangsan");
		
		//得到属性的读方法,得到属性值
		Method readMethod = pd.getReadMethod();
		String name = (String) readMethod.invoke(s);
		System.out.println("名字是:" + name);
		
		//获取属性的类型
		System.out.println("name属性的类型是:" + pd.getPropertyType().getName()); 
		
		//获取对象的所有属性名,不包括从父类(这里是指Object)继承来的属性
		BeanInfo bi = Introspector.getBeanInfo(Student.class, Object.class); 
		PropertyDescriptor[] pds = bi.getPropertyDescriptors();
		for (PropertyDescriptor p : pds) {
			System.out.println(p.getName());
		}		
	}
}

class Student {
	private String name;
	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

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

 

 ----------------------android培训java培训、java学习型技术博客、期待与您交流!----------------------

  

 

详情请查看:http://edu.csdn.net/heima

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics