I have a bunch of beans that have nullable properties like so:
package myapp.mybeans;
data class Foo(val name : String?);
And I have a method in the global space like so:
package myapp.global;
public fun makeNewBar(name : String) : Bar
{
...
}
And somewhere else, I need to make a Bar
from the stuff that's inside Foo
. So, I do this:
package myapp.someplaceElse;
public fun getFoo() : Foo? { }
...
val foo : Foo? = getFoo();
if (foo == null) { ... return; }
// I know foo isn't null and *I know* that foo.name isn't null
// but I understand that the compiler doesn't.
// How do I convert String? to String here? if I do not want
// to change the definition of the parameters makeNewBar takes?
val bar : Bar = makeNewBar(foo.name);
Also, doing some conversion here with foo.name
to cleanse it every time with every little thing, while on the one hand provides me compile-time guarantees and safety it is a big bother most of the time. Is there some short-hand to get around these scenarios?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…