Java核心类——JavaBean
在Java中,有很多class的定义都符合这样的规范:
若干private实例字段;
通过public方法来独写实例字段;
之前获取和设置字段都是以以下方式:
public class Person { private String name; private int age; public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } }
如果读写方法符合以下命名规范:
public Type getXyz() public void setXyz(Type value)
那么这种class被称为JavaBean。
上面的字段是xyz,那么读写方法分别以get和set开头,
并且后接大写字母开头的字段名Xyz。
还有一种叫做boolean,它的读方法一般命名为isXyz():
public boolean isChild() public void setChild(boolean value)
我们通常把一组对应的读方法(getter)和写方法(setter)称为属性(property).
对应的读方法是 String getName()
对应的写方法是 setName(String)
只有getter的属性称为只读属性(read-only),例如,定义一个age只读属性:
对应的读方法是int getAge()
JavaBean的作用
JavaBean主要用来传递数据,即把一组数据组合成一个JavaBean便于传输。
此外,JavaBean可以方便被IDE工具分析,生成独写属性的代码,主要用在图形接面的可视化设计中。
枚举JavaBean属性
要枚举一个JavaBean属性,可以直接使用Java核心库Inrospector:
package com.imooc.iexecption; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; class Person { 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; } } public class catchExample2 { public static void main(String[] args) throws Exception { BeanInfo info = Introspector.getBeanInfo(Person.class); for (PropertyDescriptor pd : info.getPropertyDescriptors()) { System.out.println(pd.getName()); System.out.println(" " + pd.getReadMethod()); System.out.println(" " + pd.getWriteMethod()); } } } // 结果 //age //public int com.imooc.iexecption.Person.getAge() //public void com.imooc.iexecption.Person.setAge(int) //class //public final native java.lang.Class java.lang.Object.getClass() // null //name //public java.lang.String com.imooc.iexecption.Person.getName() //public void com.imooc.iexecption.Person.setName(java.lang.String)
通过上述代码,可以列出所有的属性,以及对应的读写方法。
注意class属性Object继承的getClass()方法带来的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理