io.vavr.Tuple0 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vavr Show documentation
Show all versions of vavr Show documentation
Vavr is an object-functional library for Java 8+
/* __ __ __ __ __ ___
* \ \ / / \ \ / / __/
* \ \/ / /\ \ \/ / /
* \____/__/ \__\____/__/
*
* Copyright 2014-2017 Vavr, http://vavr.io
*
* 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 io.vavr;
/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
G E N E R A T O R C R A F T E D
\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
import io.vavr.collection.Iterator;
import io.vavr.collection.List;
import io.vavr.collection.Seq;
import java.io.Serializable;
import java.util.Comparator;
import java.util.Objects;
import java.util.function.Supplier;
/**
* A tuple of no elements which can be seen as cartesian product of no components.
*
* @author Daniel Dietrich
*/
public final class Tuple0 implements Tuple, Comparable, Serializable {
private static final long serialVersionUID = 1L;
/**
* The singleton instance of Tuple0.
*/
private static final Tuple0 INSTANCE = new Tuple0 ();
/**
* The singleton Tuple0 comparator.
*/
private static final Comparator COMPARATOR = (Comparator & Serializable) (t1, t2) -> 0;
// hidden constructor, internally called
private Tuple0 () {
}
/**
* Returns the singleton instance of Tuple0.
*
* @return The singleton instance of Tuple0.
*/
public static Tuple0 instance() {
return INSTANCE;
}
public static Comparator comparator() {
return COMPARATOR;
}
@Override
public int arity() {
return 0;
}
@Override
public int compareTo(Tuple0 that) {
return 0;
}
/**
* Transforms this tuple to an object of type U.
*
* @param f Transformation which creates a new object of type U based on this tuple's contents.
* @param type of the transformation result
* @return An object of type U
* @throws NullPointerException if {@code f} is null
*/
public U apply(Supplier extends U> f) {
Objects.requireNonNull(f, "f is null");
return f.get();
}
@Override
public Seq> toSeq() {
return List.empty();
}
// -- Object
@Override
public boolean equals(Object o) {
return o == this;
}
@Override
public int hashCode() {
return 1;
}
@Override
public String toString() {
return "()";
}
// -- Serializable implementation
/**
* Instance control for object serialization.
*
* @return The singleton instance of Tuple0.
* @see java.io.Serializable
*/
private Object readResolve() {
return INSTANCE;
}
}