1 package net.pterodactylus.sone.utils
3 import java.util.function.Predicate
6 * Basic implementation of an [Option].
8 * @param <T> The type of the option
10 class DefaultOption<T> @JvmOverloads constructor(
11 private val defaultValue: T,
12 private val validator: ((T) -> Boolean)? = null
16 private var value: T? = null
18 override fun get() = value ?: defaultValue
20 override fun getReal(): T? = value
22 override fun validate(value: T?): Boolean =
23 value == null || validator?.invoke(value) ?: true
25 override fun set(value: T?) {
26 require(validate(value)) { "New Value ($value) could not be validated." }