我有一段代码,我在其中调用类中的一个实现方法,即cmpreValue(int real,int virtual);
public class TestCompare extends TestBaseClass {
private static final Logger logger = Logger.getLogger(TestCompare.class.getName());
String virtual= null;
String real= null;
XLSParser objVal ;
public void testSomeThing() {
// Returns some string value
real= objVal.getSomeStringValue();
virtual= getExpectedValue();
cmpreValue(virtual, real);
}
void cmpreValue(String virtual, String real)
{
if(real.equals(virtual))
{
logger.info(real);
}
else{
logger.info(virtual);
}
}
这里,cmpreValue(String virtual, String real)
只使用过一次,但我也想在我的另一个类中使用这个函数。所以我尝试制作另一个类,即
public class Helpervalidate{
void cmpreValue(String virtual, String real)
{
if(real.equals(virtual))
{
// Not Visible objVal
logger.info(**objVal**.something());
}
else{
logger.info(virtual);
}
}
并在我的TestCompare类中创建Helpervalidate类的对象,并在TestCompare中调用函数cmpreValue,但随后我得到错误objVal在Helpervvalidate类中未定义。
由于我的类TestCompare已经扩展了TestBaseClass,所以我不能再扩展这个类了。那么,如何使函数cmpreValue(String virtual,String real)可重用于其他类呢?有没有什么方法可以让我简单地添加函数cmpreValue(String virtual,String real)并传递值,这样就可以正常工作了?
您应该在Helpervalidate.cmpreValue方法中传入所需的所有参数。即将方法签名更改为:
void cmpreValue(String virtual, String real, XLSParser objVal)
一般来说:要将信息传递给类,您必须使用
-
在类中存储对
objVal
的引用,并在构造函数/setter 中提供该值public class Helpervalidate{ XLSParser objVal ; void cmpreValue(String virtual, String real){ //do stuff } }
-
将其注入方法
public class Helpervalidate{ void cmpreValue(String virtual, String real, XLSParser objVal){ //do stuff } }
只使用helper进行比较,并在类中进行所有日志记录,怎么样?
如果您有一个名为"cmpreValue"的方法,那么让它做其他事情是不对的。
在助手中添加属性objVal
。生成getter和setter。在实例化助手类时,从调用方设置值。
HelperValidate validate
= new HelperValidate();
validate.setObjVal();
然后在你的方法中使用这个作为this.objVal.
希望这能有所帮助。