Lalavava 最近的时间轴更新
Lalavava

Lalavava

V2EX 第 468694 号会员,加入于 2020-02-10 23:34:37 +08:00
根据 Lalavava 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
Lalavava 最近回复了
首先根据问题描述
这里问题应该不在取什么名字
而是你的这种设计本来就糟糕透顶
你在外部对一个对象实例内部字段进行初始化
试想一下如果别人看你的代码
他必须搜索所有代码 去找到你在什么地方进行了初始化
因为你可以在任何地方进行初始化
而且初始化这个字段的位置可以和 new A 的地方没任何关系

对于你描述的场景
如下代码应该是比较好的
class A<T> {
public A(Supplier<T> initializer) {
a = CompletableFuture.supplyAsync(initializer);
}

public T getA() {
try {
return a.get();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e.getCause());
}
}

private final CompletableFuture<T> a;
}

class B {
public int foo() {
return 0;
}
}

public class Main {
public static void main(String[] args) {
var a = CompletableFuture.supplyAsync(B::new).thenAccept(b -> new A<Integer>(b::foo));
}
}
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2818 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 07:38 · PVG 15:38 · LAX 23:38 · JFK 02:38
Developed with CodeLauncher
♥ Do have faith in what you're doing.