@Override public final Field<T> plus(Field<?> value) { return add(value); }
@Override public final Field<T> as(String alias) { return super.as(alias); }
@Override public final Condition in(Select<? extends Record1<T>> query) { return compare(IN, query); }
@SuppressWarnings({ "unchecked" }) @Override public final Condition isTrue() { Class<?> type = getType(); if (type == String.class) return ((Field<String>) this).in(Tools.inline(TRUE_VALUES.toArray(EMPTY_STRING))); else if (Number.class.isAssignableFrom(type)) return ((Field<Number>) this).equal(inline((Number) getDataType().convert(1))); else if (Boolean.class.isAssignableFrom(type)) return ((Field<Boolean>) this).equal(inline(true)); else return cast(String.class).in(TRUE_VALUES); }
@Override public final Condition lessThan(Field<T> field) { return compare(LESS, nullSafe(field, getDataType())); }
@SuppressWarnings("unchecked") private final <Z extends Number> Field<Z> numeric() { if (getDataType().isNumeric()) { return (Field<Z>) this; } else { return (Field<Z>) cast(BigDecimal.class); } }
@Override public final Condition betweenSymmetric(Field<T> minValue, Field<T> maxValue) { return betweenSymmetric(nullSafe(minValue, getDataType())).and(nullSafe(maxValue, getDataType())); }
@Override public final Condition between(Field<T> minValue, Field<T> maxValue) { return between(nullSafe(minValue, getDataType())).and(nullSafe(maxValue, getDataType())); }
@Override public final <Z> Field<Z> cast(Field<Z> field) { return cast(field.getDataType()); }
@Override public final BetweenAndStep<T> betweenSymmetric(T minValue) { return betweenSymmetric(Tools.field(minValue, this)); }
@Override public final BetweenAndStep<T> between(T minValue) { return between(Tools.field(minValue, this)); }
@Override public final <Z> Field<Z> coerce(Class<Z> type) { return coerce(DefaultDataType.getDataType(null, type)); }
@Override public final boolean declaresTables() { return super.declaresTables(); } }
@Override @Deprecated public final Field<Integer> extract(DatePart datePart) { return DSL.extract(date(), datePart); }
@Override public final boolean declaresFields() { return super.declaresFields(); }
@SuppressWarnings({ "unchecked" }) @Override public final Condition isFalse() { Class<?> type = getType(); if (type == String.class) return ((Field<String>) this).in(Tools.inline(FALSE_VALUES.toArray(EMPTY_STRING))); else if (Number.class.isAssignableFrom(type)) return ((Field<Number>) this).equal(inline((Number) getDataType().convert(0))); else if (Boolean.class.isAssignableFrom(type)) return ((Field<Boolean>) this).equal(inline(false)); else return cast(String.class).in(Tools.inline(FALSE_VALUES.toArray(EMPTY_STRING))); }
@Override public final Condition equal(Field<T> field) { return compare(EQUALS, nullSafe(field, getDataType())); }
@SuppressWarnings("unchecked") private final <Z extends java.util.Date> Field<Z> date() { if (getDataType().isTemporal()) { return (Field<Z>) this; } else { return (Field<Z>) cast(Timestamp.class); } }