gpt4 book ai didi

java - 如何创建一个带有返回 get 的 toString 的供应商?

转载 作者:行者123 更新时间:2023-12-02 04:38:04 25 4
gpt4 key购买 nike

我想让 Map 值解析变得懒惰,因此正在考虑为供应商提供 toString 函数。但下面的代码无法编译:

A default method cannot override a method from java.lang.Object

有人知道如何以巧妙的方式解决这个问题吗?

@FunctionalInterface
private static interface ToStringSupplier extends Supplier<String>
{
default public String toString() {
return get();
}
}

我想要这个的原因是我的消费者(位于另一个存储库中)首先可以更新他们的代码:

来自:

String value = (Strint)map.get(key);

致:

String value = map.get(key).toString();

之后我可以将实现更改为惰性方法:

来自:

String value = expensiveCalculation();
map.put(key,value);

致:

Supplier<String> supplier () -> expensiveCalculation();
map.put(key, supplier);

最佳答案

我发现下面的代码可以很好地解决我的问题:

private static Object getToString(Supplier<String> s) {
return new Object()
{
@Override
public String toString() {
return s.get();
}
};
}

Supplier<String> supplier = () -> expensiveCalculation();
map.put(key, getToString(supplier));

关于java - 如何创建一个带有返回 get 的 toString 的供应商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33807837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com