zoukankan      html  css  js  c++  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

    java-bean

    上面的字段是xyz,那么读写方法名分别以getset开头,并且后接大写字母开头的字段名Xyz,因此两个读写方法名分别是getXyz()setXyz()

    boolean字段比较特殊,它的读方法一般命名为isXyz()

    // 读方法:
    public boolean isChild()
    // 写方法:
    public void setChild(boolean value)
    

    我们通常把一组对应的读方法(getter)和写方法(setter)称为属性(property)。例如,name属性:

    • 对应的读方法是String getName()
    • 对应的写方法是setName(String)

    只有getter的属性称为只读属性(read-only),例如,定义一个age只读属性:

    • 对应的读方法是int getAge()
    • 无对应的写方法setAge(int)

    类似的,只有setter的属性称为只写属性(write-only)。

    很明显,只读属性很常见,只写属性不常见。

    属性只需要定义gettersetter方法,不一定需要对应的字段。例如,child只读属性定义如下:

    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 boolean isChild() {
            return age <= 6;
        }
    }
    

    可以看出,gettersetter也是一种数据封装的方法。

    JavaBean的作用

    JavaBean主要用来传递数据,即把一组数据组合成一个JavaBean便于传输。此外,JavaBean可以方便地被IDE工具分析,生成读写属性的代码,主要用在图形界面的可视化设计中。

    通过IDE,可以快速生成gettersetter。例如,在Eclipse中,先输入以下代码:

    public class Person {
        private String name;
        private int age;
    }
    

    然后,点击右键,在弹出的菜单中选择“Source”,“Generate Getters and Setters”,在弹出的对话框中选中需要生成gettersetter方法的字段,点击确定即可由IDE自动完成所有方法代码。

    小结

    JavaBean是一种符合命名规范的class,它通过gettersetter来定义属性;

    属性是一种通用的叫法,并非Java语法规定;

    可以利用IDE快速生成gettersetter

    使用Introspector.getBeanInfo()可以获取属性列表。

    转自:https://www.liaoxuefeng.com/wiki/1252599548343744/1260474416351680

  • 相关阅读:
    Mac root Operation not permitted
    case_for_if 各种嵌套相结合
    RANDOM 的用法
    hdu 6681 Rikka with Cake(扫描线)
    2019牛客暑期多校训练营(第十场)F.Popping Balloons(线段树)
    2019 Multi-University Training Contest 2 Harmonious Army(最小割)
    P1361 小M的作物 (最小割)
    2019 Multi-University Training Contest 1 String(序列自动机+贪心)
    2019牛客暑期多校训练营(第九场)E.All men are brothers(并查集+排列组合)
    2019 Multi-University Training Contest 1 Path(最短路+最小割)
  • 原文地址:https://www.cnblogs.com/hanfanfan/p/12039916.html
Copyright © 2011-2022 走看看