/** * Map the 3rd part (T3) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T3 part * @param <R> the new type for the T3 part * @return a new {@link Tuple8} with a different T3 value */ public <R> Tuple8<T1, T2, R, T4, T5, T6, T7, T8> mapT3(Function<T3, R> mapper) { return new Tuple8<>(t1, t2, mapper.apply(t3), t4, t5, t6, t7, t8); }
/** * Map the 2nd part (T2) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T2 part * @param <R> the new type for the T2 part * @return a new {@link Tuple8} with a different T2 value */ public <R> Tuple8<T1, R, T3, T4, T5, T6, T7, T8> mapT2(Function<T2, R> mapper) { return new Tuple8<>(t1, mapper.apply(t2), t3, t4, t5, t6, t7, t8); }
/** * Map the 4th part (T4) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T4 part * @param <R> the new type for the T4 part * @return a new {@link Tuple8} with a different T4 value */ public <R> Tuple8<T1, T2, T3, R, T5, T6, T7, T8> mapT4(Function<T4, R> mapper) { return new Tuple8<>(t1, t2, t3, mapper.apply(t4), t5, t6, t7, t8); }
/** * Map the 8th part (t8) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T8 part * @param <R> the new type for the T8 part * @return a new {@link Tuple8} with a different T8 value */ public <R> Tuple8<T1, T2, T3, T4, T5, T6, T7, R> mapT8(Function<T8, R> mapper) { return new Tuple8<>(t1, t2, t3, t4, t5, t6, t7, mapper.apply(t8)); }
/** * Map the 6th part (T6) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T6 part * @param <R> the new type for the T6 part * @return a new {@link Tuple8} with a different T6 value */ public <R> Tuple8<T1, T2, T3, T4, T5, R, T7, T8> mapT6(Function<T6, R> mapper) { return new Tuple8<>(t1, t2, t3, t4, t5, mapper.apply(t6), t7, t8); }
/** * Map the 7th part (T7) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T7 part * @param <R> the new type for the T7 part * @return a new {@link Tuple8} with a different T7 value */ public <R> Tuple8<T1, T2, T3, T4, T5, T6, R, T8> mapT7(Function<T7, R> mapper) { return new Tuple8<>(t1, t2, t3, t4, t5, t6, mapper.apply(t7), t8); }
/** * Map the 1st part (T1) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T1 part * @param <R> the new type for the T1 part * @return a new {@link Tuple8} with a different T1 value */ public <R> Tuple8<R, T2, T3, T4, T5, T6, T7, T8> mapT1(Function<T1, R> mapper) { return new Tuple8<>(mapper.apply(t1), t2, t3, t4, t5, t6, t7, t8); }
/** * Map the 5th part (T5) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T5 part * @param <R> the new type for the T5 part * @return a new {@link Tuple8} with a different T5 value */ public <R> Tuple8<T1, T2, T3, T4, R, T6, T7, T8> mapT5(Function<T5, R> mapper) { return new Tuple8<>(t1, t2, t3, t4, mapper.apply(t5), t6, t7, t8); }
T7 t7, T8 t8) { return new Tuple8<>(t1, t2, t3, t4, t5, t6, t7, t8);
@Test public void sanityTestHashcode() { Tuple8<Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer> same = new Tuple8<>(1, 2, 3, 4, 5, 6, 7, 8); Tuple8<Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer> different = new Tuple8<>(1, 2, 3, 4, 5, 6, 7, 1); assertThat(full.hashCode()) .isEqualTo(same.hashCode()) .isNotEqualTo(different.hashCode()); } }
@Test public void nullT8Rejected() { assertThatExceptionOfType(NullPointerException.class) .isThrownBy(() -> new Tuple8<>(1, 2, 3, 4, 5, 6, 7, null)) .withMessage("t8"); }
/** * Map the 2nd part (T2) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T2 part * @param <R> the new type for the T2 part * @return a new {@link Tuple8} with a different T2 value */ public <R> Tuple8<T1, R, T3, T4, T5, T6, T7, T8> mapT2(Function<T2, R> mapper) { return new Tuple8<>(t1, mapper.apply(t2), t3, t4, t5, t6, t7, t8); }
/** * Map the 8th part (t8) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T8 part * @param <R> the new type for the T8 part * @return a new {@link Tuple8} with a different T8 value */ public <R> Tuple8<T1, T2, T3, T4, T5, T6, T7, R> mapT8(Function<T8, R> mapper) { return new Tuple8<>(t1, t2, t3, t4, t5, t6, t7, mapper.apply(t8)); }
/** * Map the 3rd part (T3) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T3 part * @param <R> the new type for the T3 part * @return a new {@link Tuple8} with a different T3 value */ public <R> Tuple8<T1, T2, R, T4, T5, T6, T7, T8> mapT3(Function<T3, R> mapper) { return new Tuple8<>(t1, t2, mapper.apply(t3), t4, t5, t6, t7, t8); }
/** * Map the 1st part (T1) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T1 part * @param <R> the new type for the T1 part * @return a new {@link Tuple8} with a different T1 value */ public <R> Tuple8<R, T2, T3, T4, T5, T6, T7, T8> mapT1(Function<T1, R> mapper) { return new Tuple8<>(mapper.apply(t1), t2, t3, t4, t5, t6, t7, t8); }
/** * Map the 6th part (T6) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T6 part * @param <R> the new type for the T6 part * @return a new {@link Tuple8} with a different T6 value */ public <R> Tuple8<T1, T2, T3, T4, T5, R, T7, T8> mapT6(Function<T6, R> mapper) { return new Tuple8<>(t1, t2, t3, t4, t5, mapper.apply(t6), t7, t8); }
/** * Map the 4th part (T4) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T4 part * @param <R> the new type for the T4 part * @return a new {@link Tuple8} with a different T4 value */ public <R> Tuple8<T1, T2, T3, R, T5, T6, T7, T8> mapT4(Function<T4, R> mapper) { return new Tuple8<>(t1, t2, t3, mapper.apply(t4), t5, t6, t7, t8); }
/** * Map the 5th part (T5) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T5 part * @param <R> the new type for the T5 part * @return a new {@link Tuple8} with a different T5 value */ public <R> Tuple8<T1, T2, T3, T4, R, T6, T7, T8> mapT5(Function<T5, R> mapper) { return new Tuple8<>(t1, t2, t3, t4, mapper.apply(t5), t6, t7, t8); }
/** * Map the 7th part (T7) of this {@link Tuple8} into a different value and type, * keeping the other parts. * * @param mapper the mapping {@link Function} for the T7 part * @param <R> the new type for the T7 part * @return a new {@link Tuple8} with a different T7 value */ public <R> Tuple8<T1, T2, T3, T4, T5, T6, R, T8> mapT7(Function<T7, R> mapper) { return new Tuple8<>(t1, t2, t3, t4, t5, t6, mapper.apply(t7), t8); }