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()方法带来的。

 

posted @   明王不动心  阅读(253)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示