Короткий ответ: Нет. Лямбда-выражения являются кодом и должны быть скомпилированы, поэтому вы не сможете их просто настроить. Это не похоже на регулярные выражения.
Более длинный ответ: во-первых, посмотрите, можете ли вы выразить изменения, которые вы ожидаете в качестве конфигурации, а затем настройте только эти переменные. Это возможно только в том случае, если вы можете предвидеть изменения, и они основаны на данных, а не на структурных.
Во-вторых, вы можете использовать шаблон стратегии с фабрикой, чтобы можно было заменить различные реализации во время выполнения. Это позволит вам отказаться от новых реализаций без восстановления полной базы кода:
public class ConfigurableFactory {
private final String strategyClassImpl;
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
System.out.println(new ConfigurableFactory().getStrategyImpl().doThing());
}
public ConfigurableFactory(){
// TODO: Load from config
strategyClassImpl ="StrategyImpl";
}
public Strategy getStrategyImpl() throws InstantiationException, IllegalAccessException, ClassNotFoundException{
return (Strategy) Class.forName(strategyClassImpl).newInstance();
}
}
interface Strategy {
String doThing();
}
class StrategyImpl implements Strategy {
public String doThing() {
return "Strategy 1";
}
}
Это не относится к лямбда-выражений, и в режиме реального развития я всегда находил его более приемлемым, чтобы просто изменить код и перестраивать, чем любой тип раскручивающейся обманки.
Что вы подразумеваете под «когда оно меняется»? Как меняется? –
Обычно этот комментарий открывается с помощью «Добро пожаловать в переполнение стека!». но вы были на сайте более трех лет, задали пять предыдущих вопросов и отправили два ответа. В любом случае: пожалуйста, примите [тур], осмотритесь и прочитайте [помощь], в частности [* Как задать хороший вопрос?] (/ Help/how-to-ask) –
Возможно для компиляции класса (содержащего лямбда или что-то еще) при запуске Java-программы, затем загрузите и выполните его. Это, однако, довольно сложная процедура. Вполне возможно, что ваша фактическая проблема может быть решена с использованием менее косвенных методов. – laune