ua.co.gravy.tuplets.Octuplet Maven / Gradle / Ivy
Show all versions of sous-chef Show documentation
/*
* Copyright 2017 Vitaliy Berdinskikh
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ua.co.gravy.tuplets;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
/**
* Group of eight.
*
* @param type of first element
* @param type of second element
* @param type of third element
* @param type of fourth element
* @param type of fifth element
* @param type of sixth element
* @param type of seventh element
* @param type of eighth element
* @author Vitaliy Berdinskikh, ur6lad
* @since 1.0
*/
public final class Octuplet extends AbstractTuplet {
private static final int ARITY = 8;
private final S first;
private final D second;
private final T third;
private final A fourth;
private final I fifth;
private final X sixth;
private final P seventh;
private final O eighth;
public Octuplet(S first, D second, T third, A fourth, I fifth, X sixth, P seventh, O eighth) {
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
this.eighth = eighth;
}
/**
* Get first element.
*
* @return first element
*/
public S first() {
return first;
}
/**
* Get second element.
*
* @return second element
*/
public D second() {
return second;
}
/**
* Get third element.
*
* @return third element
*/
public T third() {
return third;
}
/**
* Get fourth element.
*
* @return fourth element
*/
public A fourth() {
return fourth;
}
/**
* Get fifth element.
*
* @return fifth element
*/
public I fifth() {
return fifth;
}
/**
* Get sixth element.
*
* @return sixth element
*/
public X sixth() {
return sixth;
}
/**
* Get seventh element.
*
* @return seventh element
*/
public P seventh() {
return seventh;
}
/**
* Get eighth element.
*
* @return eighth element
*/
public O eighth() {
return eighth;
}
@Override
public Object get(int index) throws IndexOutOfBoundsException {
Object result;
switch (index) {
case 0:
result = first;
break;
case 1:
result = second;
break;
case 2:
result = third;
break;
case 3:
result = fourth;
break;
case 4:
result = fifth;
break;
case 5:
result = sixth;
break;
case 6:
result = seventh;
break;
case 7:
result = eighth;
break;
default:
throw new IndexOutOfBoundsException("Index " + index + " is out of bounds of octuplet!");
}
return result;
}
@Override
public int length() {
return ARITY;
}
@Override
public Stream