Найти тему
DEBAGanov

Java 259. Каковы признаки того, что класс Java Bean? Чем POJO отличается от Java Bean?

Java Bean - это класс, который соответствует определенным стандартам, которые позволяют использовать его в различных библиотеках и фреймворках Java. Класс Java Bean имеет следующие признаки:

  • Имеет конструктор без аргументов.
  • Имеет доступные для чтения и записи свойства (поля) с помощью геттеров и сеттеров.
  • Реализует интерфейс Serializable, чтобы объекты этого класса можно было сериализовать.
  • Может поддерживать события, т.е. иметь методы-обработчики, вызываемые при возникновении определенных событий.

POJO (Plain Old Java Object) - это обычный Java-класс, который не зависит от каких-либо фреймворков или библиотек. Он не обязан следовать каким-либо стандартам, но может содержать любое количество свойств, методов и конструкторов. POJO может использоваться в качестве простого контейнера данных или служить элементом сложной бизнес-логики.

Основное отличие между Java Bean и POJO заключается в том, что Java Bean является специальным типом POJO, который соответствует определенным стандартам. Java Bean обычно используется в качестве компонента, который можно переиспользовать в разных частях приложения. POJO же может иметь любую структуру и использоваться для решения специфических задач.

Пример Java Bean:

public class User implements Serializable {
private String name;
private int age;

public User() {}

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; }
}

В этом примере класс User соответствует стандартам Java Bean: у него есть конструктор без аргументов, доступные для чтения и записи свойства (name и age), реализован интерфейс Serializable.

Пример POJO:

public class Calculator {
public int add(int a, int b) { return a + b; }
public int subtract(int a, int b) { return a - b; }
}

В этом примере класс Calculator не соответствует стандартам Java Bean (нет геттеров/сеттеров и конструктора без аргументов), но все еще может использоваться для выполнения конкретного задания - математических операций.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov