У меня есть список методов, в котором есть Supplier<T>
аргументы для возврата значений по умолчанию различных типов. Однако в некоторых случаях мне нужно выдавать исключение (без проверки) вместо значений.
В настоящее время я должен передавать лямбда-выражение для каждого определения функции, но я хотел бы создать экземпляр поставщика для выдачи исключения и повторно использовать его во всех определениях функций.
У меня есть следующий код:
public static void main(String[] args)
{
testInt("Key1", 10, () -> 99);
testInt("Key2", -19, () -> 0);
testInt("Key3", null, () -> {
throw new UnsupportedOperationException(); //repetition
});
testBoolean("Key4", true, () -> Boolean.FALSE);
testBoolean("Key5", null, () -> {
throw new UnsupportedOperationException();//repetition
});
}
static void testInt(String key, Integer value, Supplier<Integer> defaultValue)
{
if (value != null)
System.out.printf("Key : %s, Value : %d" + key, value);
else
System.out.printf("Key : %s, Value : %d" + key, defaultValue.get());
}
static void testBoolean(String key, Boolean value, Supplier<Boolean> defaultValue)
{
if (value != null)
System.out.printf("Key : %s, Value : %d" + key, value);
else
System.out.printf("Key : %s, Value : %d" + key, defaultValue.get());
}
Но я хочу сделать что-то вроде:
final static Supplier<?> NO_VALUE_FOUND = () -> {
throw new UnsupportedOperationException();
};
testInt("Key3", null, NO_VALUE_FOUND);
testBoolean("Key5", null,NO_VALUE_FOUND);
Ценю любую помощь по этому вопросу.
Спасибо.