GenericTypeInfo extends TypeInformation<T> implements AtomicType<T> { @Override public int hashCode() { return typeClass.hashCode(); } @PublicEvolving  GenericTypeInfo(Class<T> typeClass); @Override @PublicEvolving boolean isBasicType(); @Override @PublicEvolving boolean isTupleType(); @Override @PublicEvolving int getArity(); @Override @PublicEvolving int getTotalFields(); @Override @PublicEvolving Class<T> getTypeClass(); @Override @PublicEvolving boolean isKeyType(); @Override @PublicEvolving TypeSerializer<T> createSerializer(ExecutionConfig config); @SuppressWarnings("unchecked") @Override @PublicEvolving TypeComparator<T> createComparator(boolean sortOrderAscending, ExecutionConfig executionConfig); @Override int hashCode(); @Override boolean canEqual(Object obj); @Override boolean equals(Object obj); @Override String toString();  }
@Test public void testGenericTypeInfoEquality() { GenericTypeInfo<TestClass> tpeInfo1 = new GenericTypeInfo<>(TestClass.class); GenericTypeInfo<TestClass> tpeInfo2 = new GenericTypeInfo<>(TestClass.class); assertEquals(tpeInfo1, tpeInfo2); assertEquals(tpeInfo1.hashCode(), tpeInfo2.hashCode()); }