Вопрос-ответ

What is a JavaBean exactly?

Что такое JavaBean в точности?

Я понял, я думаю, что "Bean" - это Java-класс со свойствами и способами получения / установки.
Насколько я понимаю, это эквивалент C struct. Это правда?

Кроме того, существует ли реальная синтаксическая разница между JavaBean и обычным class?
Существует ли какое-либо специальное определение Interface?

В принципе, почему для этого существует термин?

Также что означает Serializable интерфейс?

Переведено автоматически
Ответ 1

JavaBean - это просто стандарт. Это обычная Java class, за исключением того, что она соответствует определенным соглашениям:


  1. Все свойства являются частными (используйте методы получения / установки)

  2. Общедоступный конструктор без аргументов

  3. Реализует Serializable.

Вот и все. Это просто соглашение. Хотя от него зависит множество библиотек.

Что касается Serializable, из документации API:


Сериализуемость класса обеспечивается классом, реализующим интерфейс java.io.Serializable. Классы, которые не реализуют этот интерфейс, не будут иметь сериализованного или десериализованного состояния. Все подтипы сериализуемого класса сами по себе сериализуемы. Интерфейс сериализации не имеет методов или полей и служит только для определения семантики сериализуемости.


Другими словами, сериализуемые объекты могут быть записаны в потоки, а следовательно, в файлы, объектные базы данных, в общем, во что угодно.

Кроме того, нет синтаксической разницы между JavaBean и другим классом - класс является JavaBean, если он соответствует стандартам.

Для этого есть термин, потому что стандарт позволяет библиотекам программно выполнять действия с экземплярами классов, которые вы определяете предопределенным способом. Например, если библиотека хочет передать в потоковую передачу любой объект, который вы передаете в нее, она знает, что может это сделать, потому что ваш объект сериализуем (при условии, что библиотека требует, чтобы ваши объекты были правильными JavaBeans).

Ответ 2

Для этого есть термин, который придает ему особое звучание. Реальность далеко не так загадочна.

По сути, "компонент":


  • это сериализуемый объект (то есть он реализует java.io.Serializable и делает это правильно), который

  • имеет "свойства", получатели и установщики которых являются просто методами с определенными именами (например, getFoo() является получателем для свойства "Foo"), и

  • имеет общедоступный конструктор с нулевым аргументом (поэтому его можно создать по желанию и настроить, установив его свойства).

Что касается Serializable: Это не что иное, как "интерфейс маркера" (интерфейс, который не объявляет никаких функций), который сообщает Java, что реализующий класс согласен (и подразумевает, что он способен) на "сериализацию" - процесс, который преобразует экземпляр в поток байтов. Эти байты могут храниться в файлах, передаваться по сетевому соединению и т.д. И содержать достаточно информации, позволяющей JVM (по крайней мере, той, которая знает о типе объекта) реконструировать объект позже - возможно, в другом экземпляре приложения или даже на совершенно другой машине!

Конечно, для того, чтобы сделать это, класс должен соблюдать определенные ограничения. Главным из них является то, что все поля экземпляра должны быть либо примитивных типов (int, bool и т.д.), экземплярами некоторого класса, который также сериализуем, либо помечены как transient, чтобы Java не пыталась их включить. (Это, конечно, означает, что transient поля не переживут переход по потоку. Класс, в котором есть transient поля, должен быть готов к их повторной инициализации в случае необходимости.)

Класс, который не может соблюдать эти ограничения, не должен реализовывать Serializable (и, IIRC, компилятор Java даже не позволит ему это сделать.)

Ответ 3

JavaBeans - это классы Java, которые придерживаются чрезвычайно простого соглашения о кодировании. Все, что вам нужно сделать, это


  1. реализуйте java.io.Serializable интерфейс - для сохранения состояния объекта

  2. используйте открытый конструктор пустых аргументов - для создания экземпляра объекта

  3. предоставляет общедоступные методы получения / установки - для получения и установки значений закрытых переменных (properties).

Ответ 4

Свойства JavaBeans

JavaBean - это объект Java, который удовлетворяет определенным соглашениям о программировании:


  1. Класс JavaBean должен реализовывать либо Serializable , либо Externalizable


  2. Класс JavaBean должен иметь конструктор без аргументов


  3. Все свойства JavaBean должны иметь общедоступные методы setter и getter


  4. Все переменные экземпляра JavaBean должны быть закрытыми


Пример JavaBeans

@Entity
public class Employee implements Serializable{

@Id
private int id;
private String name;
private int salary;

public Employee() {}

public Employee(String name, int salary) {
this.name = name;
this.salary = salary;
}
public int getId() {
return id;
}
public void setId( int id ) {
this.id = id;
}
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary( int salary ) {
this.salary = salary;
}
}
java