Spec-Zone.ru › OpenJDK 25

Интерфейс Predicate

public interface Predicate
Стандартный интерфейс, предоставляющий основу для всех объектов FilteredRowSet, описывающих свои фильтры.

1.0 Общие сведения

Интерфейс Predicate — это стандартный интерфейс, который приложения могут реализовать, чтобы определить фильтр, который они хотят применить к объекту FilteredRowSet. Объект FilteredRowSet использует реализации этого интерфейса и применяет ограничения, заданные в реализации метода evaluate. Объект FilteredRowSet применяет ограничения фильтра в обоих направлениях: он выводит только строки, удовлетворяющие ограничениям фильтра, и, наоборот, вставляет, изменяет или обновляет только строки, удовлетворяющие ограничениям фильтра.

2.0 Рекомендации по реализации

Чтобы задать предикат для FilteredRowSet, необходимо реализовать этот интерфейс. В настоящее время в спецификации JDBC RowSet Implementations (JSR-114) не определены стандартные фильтры. Определение стандартных средств и механизмов для задания и развертывания различных фильтров в эталонных и поставляемых производителями реализациях интерфейса FilteredRowSet позволяет создавать гибкие реализации Predicate, соответствующие потребностям приложений.

Пример реализации может выглядеть следующим образом:

   public class Range implements Predicate {

      private int[] lo;
      private int[] hi;
      private int[] idx;

      public Range(int[] lo, int[] hi, int[] idx) {
         this.lo = lo;
         this.hi = hi;
         this.idx = idx;
      }

     public boolean evaluate(RowSet rs) {

         // Check the present row determine if it lies
         // within the filtering criteria.

         for (int i = 0; i < idx.length; i++) {
            int value;
            try {
                value = (Integer) rs.getObject(idx[i]);
            } catch (SQLException ex) {
                Logger.getLogger(Range.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            }

            if (value < lo[i] && value > hi[i]) {
                // outside of filter constraints
                return false;
            }
        }
        // Within filter constraints
       return true;
     }
  }

В приведенном выше примере реализован простой предикат диапазона. Обратите внимание: хотя реализации должны предоставлять конструкторы, принимающие String и целочисленный индекс, это не является обязательным. Такие конструкторы обеспечивают поддержку приложений с реализациями JDBC RowSet, использующих оба способа идентификации столбцов.

Начиная с версии:
1.5

Краткое описание методов

Модификатор и тип Метод Описание
boolean evaluate(Object value, int column)
Этот метод вызывается объектом FilteredRowSet, чтобы проверить, находится ли значение в пределах критерия фильтрации (или критериев, если задано несколько ограничений), установленного с помощью метода setFilter().
boolean evaluate(Object value, String columnName)
Этот метод вызывается объектом FilteredRowSet, чтобы проверить, находится ли значение в пределах критериев фильтрации, заданных с помощью метода setFilter.
boolean evaluate(RowSet rs)
Этот метод обычно вызывается внутренними методами (не являющимися открытыми) объекта FilteredRowSet, которые управляют перемещением курсора объекта RowSet от одной строки к следующей.

Подробное описание методов

evaluate

boolean evaluate(RowSet rs)
Этот метод обычно вызывается внутренними методами (не являющимися открытыми) объекта FilteredRowSet, которые управляют перемещением курсора объекта RowSet от одной строки к следующей. Кроме того, если этот внутренний метод перемещает курсор на удаленную строку, он продолжит перемещать курсор, пока не будет найдена допустимая строка.
Параметры:
rs — объект RowSet, подлежащий оценке
Возвращает:
true, если в фильтре есть другие строки; в противном случае — false

evaluate

boolean evaluate(Object value, int column) throws SQLException
Этот метод вызывается объектом FilteredRowSet, чтобы проверить, находится ли значение в пределах критерия фильтрации (или критериев, если задано несколько ограничений), установленного с помощью метода setFilter().

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

Параметры:
value — значение Object, для которого нужно проверить, может ли оно быть частью этого объекта FilterRowSet.
column — объект int, который должен соответствовать SQL-индексу столбца в этом объекте RowSet. Он должен быть передан в Predicate как один из столбцов для фильтрации при инициализации Predicate
Возвращает:
true, если значение строки находится в пределах фильтра; в противном случае — false
Вызывает исключение:
SQLException — если столбец не входит в критерии фильтрации

evaluate

boolean evaluate(Object value, String columnName) throws SQLException
Этот метод вызывается объектом FilteredRowSet, чтобы проверить, находится ли значение в пределах критериев фильтрации, заданных с помощью метода setFilter.

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

Параметры:
value — значение Object, для которого нужно проверить, может ли оно быть частью этого объекта FilterRowSet.
columnName — объект String, который должен соответствовать SQL-имени столбца в этом объекте RowSet без учета регистра. Он должен быть передан в Predicate как один из столбцов для фильтрации при инициализации Predicate
Возвращает:
true, если значение находится в пределах фильтра; в противном случае — false
Вызывает исключение:
SQLException — если столбец не входит в критерии фильтрации

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.sql.rowset/javax/sql/rowset/Predicate.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API