我想将尽可能多的可重复代码移到基类中,但我发现自己需要将派生类中的变量传递回基类。
myClass
必须有一个无参数的初始化方法,并且是通过myInterface.setup()
.
如何强制扩展器myBase
设置变量,而不必每次都检查它们是从someBaseMethod()
interface myInterface
{
void setup(String myStr);
void someBaseMethod();
}
abstract class myBase implements myInterface
{
String myStr = null;
protected abstract String getMyStr();
// called lots of times.
public void someBaseMethod()
{
if (myStr == null) myStr = getMyStr();
// ...
}
}
class myClass extends myBase
{
String s = null;
public void setup(String myStr)
{
s = myStr;
}
protected String getMyStr()
{
return s;
}
}