每日一道面试题之介绍一下Java Bean并谈谈它的命名规范~

简介: 每日一道面试题之介绍一下Java Bean并谈谈它的命名规范~

JavaBean 介绍:

JavaBean 是一种用于创建可重用组件的约定,它通常用于在不同的 Java 应用程序和框架之间传输和保存数据

在用户界面中,JavaBean 通常表示用于显示或输入数据的表单控件。在企业应用程序中,JavaBean 通常表示业务对象或数据处理对象,它们封装着应用中的数据和业务逻辑。


JavaBean将一些数据封装在一起,以提供更加简便的访问,其主要目的是将业务应用程序的业务逻辑与视图界面分离,使它们彼此独立并减少它们之间的依赖性,即使更改业务逻辑也不会影响用户界面,例如我们学过的MVC模式就是一个最典型的例子,其中Model代表数据和业务逻辑,View代表用户界面,Controller负责协调这两个组件之间的交互并控制应用程序的流程,MVC 模式可以将业务逻辑和视图分开,从而可以更简单地进行开发,提高代码的可重用性,并且使应用程序更易于维护。


什么样的Java类可被称之为JavaBean?

JavaBean其实是一个 Java 类,它具有可重用性和可扩展性的特点,满足以下条件的Java类才能被称为JavaBean :

1. 公共的无参构造函数:在Javabean中,我们既可以定义无参构造函数,也可以定义其他的构造函数,但必须满足至少含有无参构造函数。
2. 私有的成员变量和公共的方法:JavaBean 中的实例变量都必须定义为私有的,而这些实例变量的修改和访问都是通过公共的setter和getter方法,以便外部代码可以通过这些方法访问和修改 JavaBean 的状态。
规定getter 和 setter 方法命名规则要么是 get/set+属性名首字母大写格式,要么是 is/set+布尔型属性名。
3. 序列化支持:JavaBean 支持序列化,因此它必须实现Serializable接口,那我们可以将 JavaBean 对象序列化为字节流,以便发送到其他系统或写入文件系统

JavaBean的命名规范:

Bean 类的命名规范是非常重要的,因为遵循 Bean 类的命名规范,可以使代码更加易于理解和维护

在 Java 中,Bean 类的命名规范如下:

类名称:

类名必须是一个名词以大写字母开头类名必须使用驼峰式命名法。例如,Person、Student 等。

属性名称:

1:属性名称必须以小写字母开头,且必须使用驼峰式命名法,例如,firstName、lastName等。


2:属性名应该具有描述性,能够清晰地表达属性的含义。例如:age、gender、email。


3:属性名不应该使用缩写,除非是广泛使用的缩写,例如:URL、HTML。


4:属性名不应该使用 Java 关键字或保留字,例如:class、interface、public,private…


5:属性名不应该使用特殊字符,例如:$、#、@。


6:属性名应该避免使用数字作为开头,例如:2ndName。


7:属性名应该避免使用单个字母作为名称,例如:x、y、z。


8:属性名应该避免使用过长的名称,例如:thisIsAVeryLongPropertyName。


getter 和 setter 方法名称:

getter 和 setter 方法名称必须是属性名称的"get"和"set"前缀,其中 get 和 set 不区分大小写并且属性名称的首字母需要大写。例如,getFirstName、setAge 等。

Boolean 类型属性的 getter 方法名称:

如果属性是 Boolean 类型的,则 getter 名称应该是 “is” + 属性名,例如,isMarried()。

构造方法名称:

Bean 类应该提供一个无参的构造方法,构造方法名称应该与类名相同。

下述为一个规范的JavaBean的创建实例:

import java.io.Serializable;
public class EmployeeBean implements Serializable {//实现序列化接口
    //私有的属性
    private String firstName; 
    private String lastName; 
    private int age; 
    //公共的无参构造
    public EmployeeBean() {
    }
    //公共的setter和getter方法
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
相关文章
|
4天前
|
Java
Java面向对象实践小结(含面试题)(下)
Java面向对象实践小结(含面试题)(下)
14 1
|
2天前
|
消息中间件 安全 Java
在Spring Bean中,如何通过Java配置类定义Bean?
【4月更文挑战第30天】在Spring Bean中,如何通过Java配置类定义Bean?
8 1
|
4天前
|
设计模式 Java
Java面向对象实践小结(含面试题)(上)
Java面向对象实践小结(含面试题)
12 1
|
5天前
|
JavaScript 前端开发 Java
【JAVA面试题】什么是引用传递?什么是值传递?
【JAVA面试题】什么是引用传递?什么是值传递?
|
5天前
|
Java 程序员
【JAVA面试题】基本类型的强制类型转换是否会丢失精度?引用类型的强制类型转换需要注意什么?
【JAVA面试题】基本类型的强制类型转换是否会丢失精度?引用类型的强制类型转换需要注意什么?
|
5天前
|
Java
【JAVA面试题】什么是深拷贝?什么是浅拷贝?
【JAVA面试题】什么是深拷贝?什么是浅拷贝?
|
5天前
|
Java 程序员
命名之美:探索Java的标识符与命名规范
命名之美:探索Java的标识符与命名规范
|
7天前
|
存储 安全 Java
[Java基础面试题] Map 接口相关
[Java基础面试题] Map 接口相关
|
7天前
|
Java
[Java 面试题] ArrayList篇
[Java 面试题] ArrayList篇
|
8天前
|
Java 调度
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
38 1