gpt4 book ai didi

java - 带有可选的构造函数

转载 作者:行者123 更新时间:2023-12-01 11:18:24 25 4
gpt4 key购买 nike

我编写了以下代码:

void Test(A a) {
B b = new B(a.getName());
}

所以,B的构造函数预计 String 。它看起来像下面这样:

protected B (String name) {
super(name, KIND);
this.name = name;
}

但是a.getName()给我一个名字 Optional<String>作为返回值,我不想改变它。因此,我尝试更改构造函数的参数B (我将 String name 替换为 Optional<String> ),但随后 Eclipse 会在 super(name, KIND) 下划线和this.name = name带有红色,Eclipse建议再次将构造函数的参数更改为String name .

如何解决?

最诚挚的问候,

最佳答案

Optional<String> 可能包含 String ,所以你需要检查它(一般来说,处理它不存在的情况)。所以你的Test()方法可能如下所示:

void Test(A a){
// Consider adding a a.getName().isPresent() check and handling the false
// case if you need to. Otherwise you'll get an IllegalStateException.
B b = new B (a.getName().get());
}

一般来说,更好的做法是将构造函数参数保留为 String ,然后将其转换为 n Optional<String>当您存储它时。

另一种选择,如果您确实希望用户传入 Optional s,有时确实有意义,是修复 super()构造函数也采用 Optional<String> 。如果你不能这样做,你需要类似地调用 .get()并传递结果 String进入super() ;再次根据需要处理缺席的情况。

关于java - 带有可选<String>的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31528143/

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