ValueTypeInfo extends TypeInformation<T> implements AtomicType<T> { @Override public boolean equals(Object obj) { if (obj instanceof ValueTypeInfo) { @SuppressWarnings("unchecked") ValueTypeInfo<T> valueTypeInfo = (ValueTypeInfo<T>) obj; return valueTypeInfo.canEqual(this) && type == valueTypeInfo.type; } else { return false; } } @PublicEvolving  ValueTypeInfo(Class<T> type); @Override @PublicEvolving int getArity(); @Override @PublicEvolving int getTotalFields(); @Override @PublicEvolving Class<T> getTypeClass(); @Override @PublicEvolving boolean isBasicType(); @PublicEvolving boolean isBasicValueType(); @Override @PublicEvolving boolean isTupleType(); @Override @PublicEvolving boolean isKeyType(); @Override @SuppressWarnings("unchecked") @PublicEvolving TypeSerializer<T> createSerializer(ExecutionConfig executionConfig); @SuppressWarnings({ "unchecked", "rawtypes" }) @Override @PublicEvolving TypeComparator<T> createComparator(boolean sortOrderAscending, ExecutionConfig executionConfig); @Override int hashCode(); @Override boolean equals(Object obj); @Override boolean canEqual(Object obj); @Override String toString(); static final ValueTypeInfo<BooleanValue> BOOLEAN_VALUE_TYPE_INFO; static final ValueTypeInfo<ByteValue> BYTE_VALUE_TYPE_INFO; static final ValueTypeInfo<CharValue> CHAR_VALUE_TYPE_INFO; static final ValueTypeInfo<DoubleValue> DOUBLE_VALUE_TYPE_INFO; static final ValueTypeInfo<FloatValue> FLOAT_VALUE_TYPE_INFO; static final ValueTypeInfo<IntValue> INT_VALUE_TYPE_INFO; static final ValueTypeInfo<LongValue> LONG_VALUE_TYPE_INFO; static final ValueTypeInfo<NullValue> NULL_VALUE_TYPE_INFO; static final ValueTypeInfo<ShortValue> SHORT_VALUE_TYPE_INFO; static final ValueTypeInfo<StringValue> STRING_VALUE_TYPE_INFO; }
@Test public void testValueTypeEqualsWithNull() throws Exception { ValueTypeInfo<Record> tpeInfo = new ValueTypeInfo<>(Record.class); Assert.assertFalse(tpeInfo.equals(null)); }