TupleTypeInfo extends TupleTypeInfoBase<T> { @Override public int hashCode() { return 31 * super.hashCode() + Arrays.hashCode(fieldNames); } @SuppressWarnings("unchecked") @PublicEvolving  TupleTypeInfo(TypeInformation<?>... types); @PublicEvolving  TupleTypeInfo(Class<T> tupleType, TypeInformation<?>... types); @Override @PublicEvolving String[] getFieldNames(); @Override @PublicEvolving int getFieldIndex(String fieldName); @SuppressWarnings("unchecked") @Override @PublicEvolving TupleSerializer<T> createSerializer(ExecutionConfig executionConfig); @Override boolean equals(Object obj); @Override boolean canEqual(Object obj); @Override int hashCode(); @Override String toString(); @PublicEvolving static TupleTypeInfo<X> getBasicTupleTypeInfo(Class<?>... basicTypes); @SuppressWarnings("unchecked") @PublicEvolving static TupleTypeInfo<X> getBasicAndBasicValueTupleTypeInfo(Class<?>... basicTypes);  }
@Test public void testTupleTypeInfoEquality() { TupleTypeInfo<Tuple2<Integer, String>> tupleTypeInfo1 = new TupleTypeInfo<>( BasicTypeInfo.INT_TYPE_INFO, BasicTypeInfo.STRING_TYPE_INFO); TupleTypeInfo<Tuple2<Integer, String>> tupleTypeInfo2 = new TupleTypeInfo<>( BasicTypeInfo.INT_TYPE_INFO, BasicTypeInfo.STRING_TYPE_INFO); Assert.assertEquals(tupleTypeInfo1, tupleTypeInfo2); Assert.assertEquals(tupleTypeInfo1.hashCode(), tupleTypeInfo2.hashCode()); }